设计模式的七大原则
设计模式的七大原则
目的:使程序高内聚、松耦合,以及可维护性,可扩展,重用性和灵活性。
一、单一职责
每个类只实现同一项职责。
批注:相当于保持每个类是一项职责的元类。如果类中方法少,可以在类中的方法里实现单一职责,降低了元类中if判断,把类相对独立化。
二、接口隔离
最小接口法则;
每个实现类都能实现了接口的全部方法。
三、依赖倒置
高层模块不应该依赖低层模块,都应该依赖于抽象(接口或抽象类),尤其是低层一定要依赖抽象。
面向对象,以抽象为基础搭建架构,细节再依赖抽象 实现。
批注:高层抽象,底层具体实现。
变量的声明类型尽量是抽象类或接口,这样就存在一个缓冲层,有利于程序扩展和优化
依赖传递的三种方式
1)接口传递
2)构造方法
3)setter方法传递
四、里式替换
所有引用基类的地方必须能透明地使用其子类的对象。就是子类尽量不要重写父类的方法。
继承方法重写导致多态复杂性,可以通过增加更加基础的基类,去除原来的继承关系,采用依赖、聚合或组合的关系替代。
五、开闭原则(核心ocp)
【用抽象构建框架,用实现扩展细节】
提供方的扩展开放,使用方修改关闭。
批注:新增功能通过扩展实现,而不是通过修改实现。
六、迪米特方法(最少知道原则:只与直接的朋友通信)
降低类之间的耦合。
对自己依赖的类知道的越少越好。
批注:对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部,对外除了提供public方法,不对外泄露任何信息。
直接的朋友:出现在成员变量、方法参数、方法返回值中的类。出现在局部变量中的类不是直接朋友。
七、合成复用原则
尽量使用合成/聚合的方式,而不是使用继承。
批注:能使用合成或聚合方式实现的,就不采用继承方式。
八、总结:设计原则核心思想
1)针对接口编程,而不是针对实现编程
2)把应用中可能变化之处,独立出来,不与不需要变化的代码混合在一起。
3)为了交互对象之间的松耦合设计而努力