面向对象的开发中,设计一个功能,设计一个系统,应该遵循的一些原则。一个理念,六个原则。
一个理念:万事万物都是对象。
开闭原则
“开一闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。
这个规则说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
从另外一个角度讲,就是所谓的“对可变性封装原则”。“对可变性封装原则”意味着两点:
1.一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。
2.一种可变性不应当与另一种可变性混合在一起。即类图的继承结构一般不应超过两层。
做到“开—闭”原则不是一件容易的事,但是也有很多规律可循,这些规律同样也是设计原则,它们是实现开—闭原则的工具。
里氏代换原则
里氏代换原则:就是子类代替父类,程序或者代码的行为不变。例如如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都换成o2时,程序P的行为没有变化,那么类型T2是T1的子类型。
即如果一个软件实体使用的是基类的话那么也一定适用于子类。但反过来的代换不成立。
如果有两个具体类A和B之间的关系违反了里氏代换原则,可以在以下两种重构方案中选择一种:
1创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。
2从B到A的继承关系改写为委派关系。
依赖倒转原则
依赖倒转原则讲的是:要依赖于抽象,不要依赖于具体。即针对接口编程