设计模式-六大原则

207 阅读2分钟
  1. 单一职责
  2. 接口隔离
  3. 依赖倒置
  4. 里氏替换
  5. 开闭原则
  6. 迪米特法则
  7. (补充)合成复用


开闭原则

开闭原则是面向对象设计的基石,其他的原则都可以看作是实现开闭原则的手段

开闭:开放封闭,程序对扩展开放,对修改封闭,程序增加功能时,通过增加新模块来满足,            不要去改动原有模块,避免对之前功能造成影响


单一职责

一个类应该只具有一种职责,用户类中只针对用户写函数,避免将其他函数,例如订单功能写入,应该新建订单类以完成职责。

单一职责可以降低类的复杂度,提高类的可读性


里氏替换

任何基类出现的地方,子类都可以出现


个人理解:子类继承父类,可以实现方法的扩展,但是不建议重写方法

凡是父类中实现好的方法,实际上都是在制定规约,虽然不强制要求所有子类执行,但是子类任意修改会对整个继承体系造成破坏


依赖倒置

  • 高层模块不应该依赖底层模块,二者都应该依赖其抽象
  • 抽象不应该依赖细节,细节应该依赖抽象
  • 依赖倒置的中心思想是面向接口编程

个人理解:

        假设类A依赖类B,此时要将依赖改为类C,此时只能改动高层模块A,破坏了开闭                    原则。

        如果,类B,C全都是接口L的实现类,此时A只需要依赖L。根据接收到的不同类型,调用          不同代码。


接口隔离

  • 类间的依赖关系应建立在最小的接口上

实现方式:接口尽量细化,同时保证接口中方法尽量少。

接口隔离原则中,要求使用多个专门接口,提供给多个专门模块,而不是多模块依赖于一个臃肿庞大的接口。接口设计粒度越小越灵活,但是过多接口会使结构复杂,维护困难。


迪米特法则

最少知道原则,一个类应该对其他类的内部信息知道的最少

A类调用B类,B内部方法再复杂,与A无关,A只需调用B提供的API接口。

迪米特法则的另一个解释是只和直接朋友通信

直接朋友:

成员变量,方法参数,方法返回值中出现的类

所以说陌生类最好不要以局部变量的形式出现在类内部


合成复用

   尽量使用聚合,不使用继承