面向对象的设计原则

原文链接 - 面向对象的设计原则

2 面向对象的设计原则

2.1 面向对象设计的五大原则

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

2.3 面向对象的思考

  1. PHP 不是一门很好的面向对象的语言,因为其无法做到完全面向对象,也无法优雅实现面向对象。
  2. 在 PHP 的开发中应该灵活使用面向对象的特性和设计原则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值