七大原则
在一部分书中,也归纳为六大原则。
问题一:
为什么要有设计模式?
程序员在软件开发的过程中面临代码的复用,要实现高内聚、低耦合的目标。
提高程序的灵活性、可扩展性、维护性等。
问题二:
设计模式是什么?
对软件设计过程中反复出现的各种问题,提出的通用的解决方案。
1.单一职责原则
一个类只有一项职责。(而在类中,若有多个方法。一个方法只有一个职责)
除非这个类非常简单,才可以违反这个原则。
ps:优秀的代码,为了降低代码的耦合性。尽量在一个类中少用if-else。
2.接口隔离原则
客户端不应该依赖它不需要的接口。
一个类对另一个类的依赖应该是最小的。建立在最小的接口上。
3.依赖倒转原则
3.1 高层模块不应该依赖低层模块。
3.2 抽象不应该依赖细节,细节应该依赖抽象
3.3 依赖倒转的中心思想是面向接口编程
在java中,抽象主要是接口和抽象类,细节就是具体的实现类。
接口和抽象为的目的是定好规范,不涉及具体的操作,而将具体的操作交给实现类或者子类去完成。
依赖关系传递的三种方法:
1.基于接口实现
2.基于构造器
3.基于setter方法
4. 里氏替换原则
继承的规范。
简单说,就是在子类中尽量不要重写父类的方法。
适当的情况下,可以通过聚合,组合,依赖来解决。
通常的方法是让父类和子类同时继承一个更加基础的类。
5. 开闭原则(OCP)
降低类之间的耦合。
最重要的原则。前面的都是为了实现这个原则。
Open Closed Principle
对修改关闭(不能让使用方改已经有的代码),
对拓展开放(提供方方便扩展功能)。
6. 迪米特法则(最少知道原则)
一个类对自己所依赖的类,知道的越少越好。尽量将逻辑封装在类的内部。
对外除了提供public方法,不对外提供任何信息。(只与直接的朋友通信)
成员变量,方法参数,方法返回值为类的直接朋友 。
局部变量不是类的直接朋友。
陌生的类,最好不要以局部变量的形式出现在类的内部。
7. 合成复用原则(Composite Reuse Priciple)
尽量使用合成/聚合的方式。而不是继承。
小结:
- 找出需要变化的代码,把它们独立出来。不要和不需要变化的代码混合在一起。
- 面对接口编程。
- 交互对象间尽量松耦合。