6大设计原则

单一职责原则

简称: SRP
定义: 应该有且仅有一个原因引起类的变更.
好处:
    1. 类的复杂性降低
    2. 可读性提高
    3. 可维护性提高
    4. 变更引起的风险降低

里氏替换原则

简称: LSP
定义:
    1. 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有
    的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型.
    2. 所有引用父类的地方必须能透明地使用其子类的对象.
含义:
    1. 子类必须完全实现父类的方法
    2. 子类可以有自己的个性
    3. 覆盖或实现父类的方法时输入参数可以被放大
    4. 覆盖或实现父类的方法时输出结果可以被缩小

依赖倒置原则

简称: DIP
定义: 
    1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象
    2. 抽象不应该依赖细节
    3. 细节应该依赖抽象
好处:
    1. 减少类间的耦合性
    2. 提高系统的稳定性
    3. 降低并行开发引起的风险
    4. 提高代码的可读性和可维护性
实现:
    1. 每个类尽量都有接口或抽象类或抽象类和接口两者都具备
    2. 变量的表面类型尽量是接口或抽象类
    3. 任何类都不应该从具体类派生
    4. 尽量不要覆写父类的方法
    5. 结合里氏替换原则使用

接口隔离原则

简称: ISP
定义:
    1. 客户端不应该依赖它不需要的接口
    2. 类间的依赖关系应该建立在最小的接口上
含义:
    1. 接口要尽量小
    2. 接口要高内聚
    3. 定制服务
    4. 接口设计是的限度的
实现:
    1. 一个接口只服务于一个子模块或业务逻辑
    2. 通过业务逻辑压缩接口中的public方法
    3. 已经被污染的接口,尽量支修改,若变更的风险较大,则采用适配器模式进行转化管理
    4. 环境不同,接口的拆分的标准就不同

迪米特法则

简称: LoD 
又称: 最少知识原则(LKP)
定义: 
    如果两个类不必直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的
    一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用.
直接通信条件:
    1. 当前对象本身
    2. 心参量形式传入到当前对象中的对象
    3. 当前对象的实例变量直接引用对象
    4. 当前对象的实例变量如果是琴聚集,那么聚集中的元素也都是
    5. 当前对象所创建的对象
实现:
    1. 优先考虑将一个类设置成不变类
    2. 尽量降低一个类的访问权限
    3. 谨慎使用Serializable
    4. 尽量降低成员的访问权限

开闭原则

简称: OCP
定义: 
    软件实体应当对扩展开放,对修改关闭.开闭原则中"开",是指对于组件功能的扩展是开放的,
是允许对其进行功能扩展的;开闭原则国"闭",是指对原有代码的修改是封闭的,即修改原有的代码
对外部的使用是透明的.

你可能感兴趣的:(设计模式)