美文网首页
设计模式之六大原则

设计模式之六大原则

作者: Leonzai | 来源:发表于2018-04-08 10:16 被阅读10次

1. 单一职责

一个类应当只负有单一的职责。

为什么?因为如果类负有了两个职责,那么其中一个职责变化很有可能会影响另一个职责的正常运行,并且会影响类的复用等一系列的问题。 

反例:A 类功能含有链接数据库,查询员工。

方案:上面 A 类两个职责分别建立一个类:数据库操作类、员工操作类。

2. 开闭原则

即软件实体应尽量在不修改原有代码的情况下进行扩展。

反例:功能是显示各种类型的图表,如饼状图和柱状图等。
实现:有显示图表类 ChartDisplay ,饼图类 PieChart ,柱图类 BarChart 。
在 ChartDisplay 的 display 方法中,根据类型判断调用 PieChart 类的 display 还是 BarChart 的 display。
下次如果多了折线图类,那么就需要在 ChartDisplay 中添加代码判断是否是折线图类去调用折线图类的 Display,这样就破坏了开闭原则。

方案:方法不止一种,就 php 而言,可以使用静态绑定。其他的可以使用依赖注入模式。

3. 里氏替换原则

子类可以扩展父类的功能,但不能改变父类原有的功能。

子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

4. 依赖倒置

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
面向接口编程。

业务逻辑层相对于数据层是高层模块,尽量不要让业务逻辑层依赖数据层, 
可以在数据层抽象出一个接口,让业务逻辑层依赖于这个抽象接口。 

反例:子类依赖低层类 A,有一天需要修改成子类依赖低层类 B,这时候就要修改大量代码。 

方案:低层类 A 抽象出一个接口。让子类去依赖这个接口。以后要依赖低层类 B,只要 B 实现这个接口即可满足。

5. 接口隔离

顾名思义,接口需要隔离,为什么需要隔离,因为我们要将臃肿的接口拆分成最小接口。
如果不是最小接口,就需要去实现他们不需要的接口。

6. 最少知道

类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

相关文章

  • 无标题文章

    设计模式之六大原则(转载) 设计模式之六大原则(转载) 关于设计模式的六大设计原则的资料网上很多,但是很多地方解释...

  • 设计模式 - 六大原则

    Reference 快速理解-设计模式六大原则 设计模式的六大原则 设计模式之六大原则作者:海子出处:http:/...

  • 设计模式六大原则

    设计模式之六大原则(转载) 关于设计模式的六大设计原则的资料网上很多...

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • 设计模式之开闭原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之迪米特法则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之依赖倒置原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之接口隔离原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之单一职责原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之里式替换原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

网友评论

      本文标题:设计模式之六大原则

      本文链接:https://www.haomeiwen.com/subject/xhqphftx.html