面向对象设计原则
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第三方中间件,后台修改后通过它发送消息,其他系统监听消息。
相关文章推荐
- 10个经典的面向对象设计原则
- 面向对象设计原则
- 面向对象设计原则
- Java的10个面向对象设计原则
- Java程序员应了解的10个面向对象设计原则
- 我学设计模式 之 面向对象设计原则
- 面向对象设计原则
- 融会贯通——深入了解面向对象设计原则“依赖倒转原则”
- 你必须知道的.NET读书笔记分享——(2)面向对象设计原则
- Java程序员应该了解的10个面向对象设计原则
- 融会贯通——最常用的面向对象设计原则“合成复用原则”
- 面向对象设计原则
- [译]Java 程序员应该了解的 10 个面向对象设计原则
- 融会贯通——最常用的面向对象设计原则“合成复用原则”
- 面向对象设计原则
- Java 程序员应该了解的 10 个面向对象设计原则
- 最常见的7种面向对象设计原则
- Java程序员应了解的10个面向对象设计原则
- Java程序员应该了解的10个面向对象设计原则
- 面向对象设计原则