一、面向抽象原则
面向抽象编程,是指当设计一个类时,不该让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。
见java156例子。
二、开-闭原则
就是让用户的设计应当对拓展开放,对修改关闭,拥抱变化,拒绝修改。
本质是指在一个设计中增加新的模块时,不用修改旧模块。
三、多用组合,少用继承原则
1)继承与复用
- 子类继承父类的方法作为自己的方法,即父类的方法可以被子类通过继承的方式复用 优点:
子类可以重写父类的方法,即易于修改和拓展被复用的方法。
缺点:
- 子类无法再运行期间改变继承的方法的行为。
- 子类与父类的关系是强耦合,父类的改变会导致子类改变。
- 父类的内部细节对于子类是可见的。
2)组合和复用
组合:一个对象将其他对象作为自己的组成部分。
复用:对象a组合了对象b,那么对象a可以复用对象b的方法。
优点:
- a对象复用是不可见b对象的方法。
- a对象与b对象是弱耦合的关系,修改b对象类的方法,不必修改当前代码。
- 当前对象可以在运行时刻动态地指定所包含的对象。
缺点:
- 容易导致系统中的对象过多。
- 为了能组合多个对象,必须仔细的对接口进行定义。
四、高内聚、低耦合原则
如果类中的方法是一组相关的行为,则称该类是高内聚。
高内聚便于类的维护。
低耦合就是尽量不要让一个类含有太多其它类的实例的引用,便于类的维护。