面向对象设计原则
推荐链接:https://www.cnblogs.com/sh91/archive/2012/03/25/2416624.html
种类(7)
开放封闭原则、单一职责原则、依赖倒置原则、里氏替换原则、迪米特法则、接口隔离原则 组合\聚集复用原则
单一职责原则
一个类负责一个职责。单一职责原则是实现高内聚、低耦合的指导方针
里氏替换原则
任何基类可以出现的地方,子类一定可以出现(任何适用于子类的条件,也一定适用于基类)
依赖倒置原则
对抽象进行编程;依赖于抽象,不要依赖于具体实现
类之间的耦合关系:零耦合关系、具体耦合关系、抽象耦合关系。
以抽象方式耦合是依赖倒置原则的关键
迪米特法则/最少知识原则
设计模式==》门面模式(Facade) 中介模式(Mediator)
对象应当对其他对象有尽可能少的了解,减少与其他实体的相互作用。==>降低类的耦合程度。
几种典型定义如下:
(1) 不要和“陌生人”说话。英文定义为:Don't talk to strangers.
(2) 只与你的直接朋友通信。英文定义为:Talk only to your immediate friends.
(3) 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。英文定义为:Each unit should have only limited knowledge about other units: only units "closely" related to the current unit.
狭义的迪米特法则:降低类之间的耦合
广义的迪米特法则:对信息隐藏的控制
开放封闭原则
所有面向对象原则的核心,对扩展开放,对修改关闭。/封装变化 将经常变化的状态封装为一个类
抽象化是开闭原则的核心。
设计模式==》Template Method模式 模板方法模式 Strategy模式 策略模式
接口隔离原则
使用多个专门化的接口比使用单一的总接口要好,保持接口的粒度最小。使用接口隔离原则拆分接口时,必须满足单一职责原则。
组合/聚合复用原则
聚合:含有 部分可以脱离整体作为一个独立的个体存在
组合:更强的聚合,部分组成整体,而且不可分割
尽量使用组合/聚合,而不是使用继承
只有下列条件满足时,才使用继承关系
1、子类(白🐎)是超类(🐎)的一个特殊种类,而不是超类的一个角色(马蹄)
2、永远不会出现需要将子类替换为另外一个类
3、子类具有扩展超类的职责,而不是替换或者注销超类的责任。