您的位置:快乐家园 > PHP开发 > 文章内容
面向对象设计的几大原则  
添加时间:2021-08-29

1、【开闭原则】(Open Close Principle)

  对扩展开放,对修改关闭。

  具体来讲:在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。


2、【单一职责】原则(Single Responsibility Principle)

   即一个类应该只负责一项职责


3、【依赖倒转】原则(Dependence Inversion Principle)

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

  具体来讲:使用高层次的接口类抽象类进行变量的声明、参数的声明、方法的返回声明等。要保证这一点,一个具体类应该只实现接口和抽象类中声明过的方法,而不应当给出多余的方法。

  针对接口编程,依赖于抽象而不依赖于具体(细节)


4、【接口隔离】原则(Interface Segregation Principle)

  使用多个隔离的接口,比使用单个接口要好。

  它还有另外一个意思是:降低类之间的耦合度。

  由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。


5、【迪米特】法则(Demeter Principle ,也称最少知道原则Least Knowledge Principle)

  一个对象应该对其他对象保持最少的了解。一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

  降低实体之间的耦合度,使每个模块相对独立


6、【里氏代换】原则(Liskov Substitution Principle)

  任何基类可以出现的地方,子类一定可以出现。

  里氏代换原则是面向对象设计的基本原则之一。 

  LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。


7、【合成复用】原则(Composite Reuse Principle)

  尽量使用组合/聚合的方式,而不是使用继承。

  组合:定义了两个类,一个是person,一个是family;在family类中创建person类中的对象,把这个对象视为family类的一个属性,并调用它的方法处理问题,这种复用方式就叫“组合”。

  聚合:是将几个对象收集在一起生成一个新对象的行为,其特性是聚合的内部对象与聚合的外部对象相对独立。

  组合:是将几个对象收集在一起生成一个新对象的行为,其特性是聚合的内部对象与聚合的外部对象相对独立,但两者的生命周期一致。

  非组合:是将几个对象收集在一起生成一个新对象的行为,其特性是聚合的内部对象与聚合的外部对象相对独立,但两者的生命周期不一致。

  可以看到聚合包括组合和非组合。

  生命周期不一致的理解,内部对象先实例化然后再传给主对象使用,主对象删除后,内部对象实例仍然存在。