面向对象的设计原则
2017-10-31 18:19
351 查看
原文链接 - 面向对象的设计原则
可以减少类之间的耦合,提高类的复用性
工厂模式允许你在代码执行时实例化对象
命令模式也是 SRP 的体现,命令模式分离“命令的请求者”和“命令的实现者”方面的职责
代理模式也体现了 SRP
SRP 不只是对类设计有意义,对以模块、子系统为单位的系统架构设计同样有意义
一个类对另一个类的依赖性应当是建立在最小的接口上的
接口污染就是为接口添加不必要的职责
“接口隔离”其实就是定制化服务设计的原则,使用接口的多重继承实现对不同的接口的组合,从而对外提供组合功能 – 达到“按需提供服务”
对于接口的污染
利用
利用
Closed,在对模块的功能进行扩展时,不应该影响或大规模的影响已有的程序模块
核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定
在设计方面充分应用“抽象”和“封装”的思想
在系统功能编程方面应用面向接口的编程
子类型必须能够替换掉他们的父类型、并出现在父类能够出现的任何地方。它指导我们如何正确的进行继承与派生,并合理的重用代码
LSP 主要是
如何遵守该设计原则呢?
父类的方法都要在之类中实现或重写,并且派生类只实现其抽象类中声明的方法,而不应当给出多余的方法定义或实现
在客户端程序中只应该使用父类对象而不应当直接使用之类对象,这样可以实现运行期绑定(动态多态)
PHP 对 LSP 的支持并不好,缺乏向上转型等概念
抽象不能依赖于具体,具体应该依赖于抽象
专门由一个程序检测配置是否正确(如所依赖的类文件是否存在)以及加载配置所依赖的实现,这个检测程序,就称为
一般认为,
在 PHP 的开发中应该灵活使用面向对象的特性和设计原则
2 面向对象的设计原则
2.1 面向对象设计的五大原则
2.1.1 单一职责原则(Single Pesponsibility Principle,SRP)
一个是避免相同的职责分散到不同的类中,另一个是避免一个类承担太多责任可以减少类之间的耦合,提高类的复用性
工厂模式允许你在代码执行时实例化对象
命令模式也是 SRP 的体现,命令模式分离“命令的请求者”和“命令的实现者”方面的职责
代理模式也体现了 SRP
SRP 不只是对类设计有意义,对以模块、子系统为单位的系统架构设计同样有意义
2.1.2 接口隔离原则(Interface Segregation Principle,ISP)
客户端不应该是被迫实现一些他们不会使用的接口一个类对另一个类的依赖性应当是建立在最小的接口上的
接口污染就是为接口添加不必要的职责
“接口隔离”其实就是定制化服务设计的原则,使用接口的多重继承实现对不同的接口的组合,从而对外提供组合功能 – 达到“按需提供服务”
对于接口的污染
利用
委托分离接口
利用
多继承分离接口
2.1.3 开放-封闭原则(Open-Close Principle,OCP)
Open,模块的行为必须是对外开放的、支持扩展的,而不是僵化的Closed,在对模块的功能进行扩展时,不应该影响或大规模的影响已有的程序模块
核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定
在设计方面充分应用“抽象”和“封装”的思想
在系统功能编程方面应用面向接口的编程
2.1.4 里式替换原则(Liskov Substitution Principle,LSP)
子类必须能替换成他们的基类子类型必须能够替换掉他们的父类型、并出现在父类能够出现的任何地方。它指导我们如何正确的进行继承与派生,并合理的重用代码
LSP 主要是
针对继承的设计原则
如何遵守该设计原则呢?
父类的方法都要在之类中实现或重写,并且派生类只实现其抽象类中声明的方法,而不应当给出多余的方法定义或实现
在客户端程序中只应该使用父类对象而不应当直接使用之类对象,这样可以实现运行期绑定(动态多态)
PHP 对 LSP 的支持并不好,缺乏向上转型等概念
2.1.5 依赖倒置原则(Dependence Inversion Principle,DIP)
上层模块不应该依赖下层模块,它们共同依赖于一个对象(父类不能依赖子类,它们都要依赖抽象类)抽象不能依赖于具体,具体应该依赖于抽象
专门由一个程序检测配置是否正确(如所依赖的类文件是否存在)以及加载配置所依赖的实现,这个检测程序,就称为
IOC容器
一般认为,
依赖注入(DI)和
依赖查找(DS)是 IOC 的两种实现
2.3 面向对象的思考
PHP 不是一门很好的面向对象的语言,因为其无法做到完全面向对象,也无法优雅实现面向对象。在 PHP 的开发中应该灵活使用面向对象的特性和设计原则
相关文章推荐
- 架构师之路(5)---面向对象的设计原则
- 面向对象的六大设计原则(基于Volley框架分析)
- 8条面向对象的设计原则
- 面向对象的设计原则四 - 里氏代换原则
- Java设计模式之——面向对象六大原则
- 面向对象的5条设计原则
- 面向对象的设计原则-类设计原则
- 带你了解面向对象的设计原则
- 面向对象的5条基本设计原则
- 面向对象的七大设计原则
- 设计模式-面向对象3个基本要素和5个基本设计原则
- 面向对象的设计原则二-单一职责原则
- 备注:面向对象的设计原则与目标[总结篇]
- 面向对象的5条基本设计原则----拜读大作后
- 面向对象的基本设计原则
- 【设计模式】 面向对象六大设计原则
- 设计模式之——面向对象的六大原则
- 面向对象的六大设计原则
- 架构师之路(5)---面向对象的设计原则
- 面向对象的5个基本设计原则