设计模式六大原则总结

Posted by 鸿杰 on June 26, 2016

设计模式的六大原则

  1. 开闭原则是灵魂,是精神领袖

1.1 抽象约束

1.1.1 通过接口或者抽象类扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法

1.1.2 参数类型,引用对象尽量使用接口或抽象类,而不是实现类

1.1.3 抽象层尽量保持稳定

1.2 封装变化

1.2.1 将相同的变化封装到一个接口或者抽象类中

1.2.2 将不同的变化封装到不同的接口或抽象类中,不应该有两个不同的变化出现在同一个接口或抽象类中

注:开闭原则是对扩展开放,对修改关闭,并不意味着不做任何修改,底层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。扩展一般是继承,聚合。

  1. 单一原则:有且仅有一个原因引起类的变更

2.1 接口单一原则

2.2 抽象类的设计尽量做到只有一个原因引起变化

注:抽象类和接口职责单一,职责业务逻辑的划分

  1. 里氏替换原则:只要父类出现的地方,子类久可以出现,而且换为子类也不会产生任何错误或异常

3.1 子类必须完全实现父类的方法

3.2 子类可以有自己的个性,即自己的方法或属性

3.3 子类的参数范围必须必父类的范围宽或者相同

3.4 子类的返回值类型必须小于或等于父类的返回值

  1. 依赖倒置原则:

4.1 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类发生的

4.2 接口或抽象类不依赖于实现类

4.3 实现类依赖接口或者抽象类

  1. 接口隔离原则:接口的方法尽量少,保证接口的纯洁性

5.1 接口尽量小:但是不能违反单一原则

5.2 接口高内聚:提高接口,类,模块的处理能力,减少对外的交互

5.3 定制服务:只提供访问者需要的方法

5.4 接口设计:要有一定的限度,不能一个方法一个接口

  1. 迪米特法则:最少知识原则,即一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道最少,你(被耦合的对象或调用类)的内部是如何复杂都和我没有关系,那是你的事情,我就知道你提供的这些public方法,其他的我不关心

6.1 只和朋友交流:朋友类定义,出现在成员变量,方法的输入输出参数中的类称为成员朋友类。每个对象必然会与其它对象有耦合关系,两个对象之间的耦合久称为朋友关系

6.2 朋友之间也是有距离的:降低影响,也降低对其他类的影响,展示的就是类的高内聚特性

6.3 是自己的就是自己的:如果一个方法放在本类中,即不增加类之间关系,也对本类不产生负面影响,那就放置在本类中。