面向对象设计原则
单一职责原则:每个类都应该只有一个职责(高内聚,低耦合指导思想)
开闭原则:对扩展开放,对修改关闭。(面向接口设计思路,对接口或抽象类进行扩展,不修改以前的代码,降低耦合的方法)
里氏替换原则:任何父类出现的地方都可以用它的子类来替换,且不影响功能(继承的准则)
依赖倒置原则:高层模块不依赖底层模块,全部都依赖其抽象;抽象不应该依赖于具体,具体应该依赖于抽象(面向对象设计思路,开闭原则是目的,依赖倒置是实现开闭原则的手段,通过依赖抽象来实现扩展开放,修改关闭)
接口隔离原则:使用多个专门的接口比使用单一的总接口要好
迪米特原则:一个对象应当对其他对象尽量少的了解(封装的准则)
组合/聚合复用原则:优先使用组合/聚合,其次考虑继承
产生依赖的原因
按依赖程度从高到底排列
- 继承:
派生类继承自基类,获得了基类的全部内容。 - 组合(聚合)
一个类型包含另外一个类型的成员。 - 传参
一个类型作为参数传递给另外一个类型的成员方法。 - 临时变量
一个类型的方法中将另外一个类型用作了临时变量
降低依赖的方法
通过依赖倒置原则,将通用的功能设计成抽象,理论上让任何一个类型都包含抽象类型成员,任何一个方法都只包含抽象类型的参数,通过抽象类型来降低依赖程度
注:抽象类型中,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类;
接口是根本不知子类的存在,方法如何实现还不确认,预先定义。