七大设计原则
目的:代码重用性,可读性,可扩展性,可靠性—高内聚,低耦合。
单一职责原则
对类来说,一个类应该只负责一项职责。
-
降低类的复杂度
-
提高类的可读性,可维护性
-
降低变更引起的风险
-
只有逻辑足够简单,才可以在代码级别违反此原则;只有类的方法数量足够少,才可以在方法级别保持此原则。
接口隔离原则
类不应依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上
依赖倒转原则
抽象—接口或抽象类;细节—具体的实现类
高层不应依赖底层模块,二者都应该依赖其抽象。抽象不应依赖细节,细节应该依赖抽象。中心思想—面向接口编程—以抽象为基础搭建的构架比以细节为基础的构架要稳定的多—制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成
***接口传递,构造方法传递,setter方式传递
-
底层模块尽量都得有抽象类或接口
-
变量的声明类型尽量是抽象类或接口,这样变量引用和实际对象间,就存在一个缓冲区,利于程序扩展和优化
-
继承时遵循里氏替换原则、
里氏替换原则
如何正确地使用继承
-
所有引用基类的地方必须能透明地使用其子类的对象
-
子类尽量不要重写父类的方法
-
继承让两个类的耦合性增强,适当情况下,可以用聚合、组合和依赖来解决问题。
开闭原则OCP
-
最基础,最重要,使用设计模式的目的就是遵循开闭原则
-
一个类,模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节
-
类需要变化时,尽量扩展类的行为来实现变化,而不是修改已有的代码
迪米特法则-最少知道原则
-
一个对象应该对其他对象保持最少的了解,关系越亲密,耦合度越大
-
对于被依赖的类不管多么复杂,都应该将逻辑封装在类的内部,除了public方法外不对外泄露任何信息
-
只和直接的朋友通信:两个对象有耦合关系,就称之为朋友关系。我们称出现成员变量、方法参数和方法返回值的类为直接的朋友,而出现在局部变量中的类不是直接朋友,陌生的类最好不要以局部变量的形式出现在类的内部
-
仅要求降低类间的耦合关系,而不是要求完全没有依赖关系
合成复用原则
尽量使用合成/聚合的方式,而不是使用继承
核心思想
-
找出类中需要变化的地方,将他们独立出来,不要跟那些不用变化的代码混在一起。
-
面向接口编程,而不是实现
-
为了交互对象之间的松耦合设计而努力