写给自己看的设计模式之《设计原则》

设计原则

转自:https://www.cnblogs.com/pony1223/p/7594803.html

1. 单一职责

定义
一个类只负责一项职责

优点

  • 降低类的复杂度,逻辑简单
  • 提高类的可读性,提高系统的可维护性
  • 降低变更风险,影响点较少

2. 里氏替换原则

定义
任何基类出现的地方,子类一定可以出现。子类可以扩展父类的功能,但不能改变父类原有的功能

继承的优点

  • 子类拥有父类的所有属性和方法,减少创建类的工作量
  • 提高代码重用性
  • 提高代码可扩展性,子类不但拥有父类的功能,也可以有自己的功能

继承的缺点

  • 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。
  • 降低了代码的灵活性。因为继承时,父类会对子类有一种约束。
  • 增强了耦合性。当需要对父类的代码进行修改时,必须考虑到对子类产生的影响。有时修改了一点点代码都有可能需要对打断程序进行重构。

规则

  • 子类可以实现父类的抽象方法,但是不能覆盖非抽象方法
  • 子类可以增加自己的方法
  • 子类覆盖或者重载父类的方法时,方法入参要比父类更宽松(父类:ArrayList,子类:List)
  • 当子类实现父类的方法时,方法返回值要比父类更具体

3. 依赖倒置原则

定义
要依赖于抽象,不要依赖于具体实现。高层模块不应该依赖于低层模块,二者应该依赖其抽象;抽象不应该依赖于细节,细节应该依赖于抽象。面向接口编程。

优点

  • 面向接口编程,降低类之间的耦合性,提高系统稳定性,减少修改程序造成的风险

规则

  • 低层模块尽量都要有抽象类或接口,或者两者都有(可能会被人用到的)
  • 变量的声明类型尽量是抽象类或接口
  • 使用继承时遵循里氏替换原则

4. 接口隔离原则

定义
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。将臃肿的接口拆分成几个接口,类按需建立依赖关系

优点

  • 降低类之间的耦合度,提供程序灵活性

规则

  • 接口尽量小,但是要有额度。过少程序不灵活,过多设计复杂化。
  • 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来
  • 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情

5. 迪米特原则(最少知道原则)

定义
一个对象应该对依赖的对象保持最少的了解,对于被依赖的类,无论多么复杂,都尽量地将逻辑封装在类的内部,对外提供public方法,不对外泄漏任何信息

优点

  • 降低耦合关系

规则

  • 尽量降低类之间的耦合关系

6. 开闭原则

定义
对扩展开放,对修改关闭

7. 总结

用抽象建立框架,用实现扩展细节

  • 单一职责原则 实现类要职责单一
  • 里氏替换原则 不要破坏继承体系
  • 依赖倒置原则 要面向接口编程
  • 接口隔离原则 在设计接口的时候要精简单一
  • 迪米特原则 降低耦合。
  • 开闭原则 总纲,对扩展开放,对修改关闭

猜你喜欢

转载自blog.csdn.net/Dkangel/article/details/105579783