您的位置:首页 > 其它

面向对象设计原则

2017-07-29 18:41 169 查看

1.单一职责原则

一个类只负责一个功能领域中的相应责任。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。

2.开闭原则

一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

在很多面向对象编程语言中都提供了接口、抽象类等机制,可以通过它们定义系统的抽象层,再通过具体类来进行扩展。

例:项目中有个插件化框架,有各种插件如:IUser 登录、IPay 支付、IPush 推送、IShare 分享等,功能有很多种实现,我们可以根据需要配置具体类,需要增强功能可以在具体类中改。

3.里氏代换原则

所有引用基类的地方必须能透明地使用其子类的对象

在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

例:插件化框架项目中有IUser接口,是登录功能的抽象。编码时调用IUser的方法,运行时其实用的是具体类的方法。

4.依赖倒转原则

抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

在多数情况下,2、3、4设计原则会同时出现,开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段,他们相辅相成,相互补充,目标一致,只是分析问题时所站角度不同而已。

例:插件化框架项目中有IUser接口,是登录功能的抽象。编码时调用IUser的方法,运行时其实用的是具体类的方法。

5.接口隔离原则

使用多个专门的接口,而不是使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

接口应该尽量细化,同事接口中的方法应该尽量少,每个接口中只包含一个客户端(如子模块或业务逻辑)所需要的方法即可。

例:设计插件化框架时,回调接口分出生命周期方法接口、登录接口、支付接口、退出接口、登出接口等,各有相应职责。

6.合成复用原则

尽量使用对象组合,而不是继承来达到服用的目的。

在一个新的对象里通过关联关系来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。

例:插件化框架内有一个实例化SDK类,它是一个单例类,里面有登录、支付等功能,调用的是登录、支付功能抽象的具体类进行登录与支付。

7.迪米特法则

一个软件实体应当尽可能少地与其他实体发生相互作用。

通过引入一个合理的第三者来降低现有对象之间的耦合度。

例:分布式系统中个子系统之间的通信,消息同步问题。如果用restful,业务逻辑会变得更复杂,若以后有变动修改起来比较麻烦。所以可以引入XXMQ第三方中间件,后台修改后通过它发送消息,其他系统监听消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面向对象