什么样的设计才是一个良好的面向对象设计?一个面向对象的设计应该遵守下面几个法则;
1.单一职责原则
单一职责原则的具体表述为,一个类应该有且仅有一个职责,所谓一个类的职责是指引起这个类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因引起这类变化,其实就是耦合了多个互相不相关的职责,就会降低这个类的内聚性.
2.关闭原则
这个原则的意思是软件实体应该对扩展开放,而对修改关闭.
3.里氏代换原则
里氏代换原则指子类型能够替换掉它们的基类型,若对每个类型S的对象O1都存在一个类型T的O2,使得在所有针对T编写的程序P中,用O1替换O2后,程序P行为功能不变,则S是T的子类型4.依赖反转原则
依赖反转原则表述如下:
>高层不应该依赖于低层模块,二者都应该依赖于抽象;
>抽象不应该依赖于细节,细节应该依赖于抽象;
>任何变量都不应该持有一个指向具体类的指针或者引用;
>任何类都不应该从具体类派生;
>任何方法都不应该覆写它的基类中的已经实现的方法.
5.组合复用原则
组合/聚合复用原则优先使用组合/聚合而不是继承.
6.迪米特原则
迪米特法则又称最少知识原则,它的特点如下:
>只和直接朋友对话
>每个单元对其他单元仅仅具有有限的了解
>每个单元应该仅仅与它的朋友对话,不要和陌生人对话
7.接口隔离原则
接口隔离原则是不要强迫客户依赖于它们不用的方法.
如果强迫客户程序依赖于那些它们不使用的方法,这将导致所有客户程序之间的偶合,换句话说,如果一个客户程序依赖于一个含有它不使用的方法的类,但是其它客户程序却要使用这个方法,那么当其他客户要求这个类改变时,就会影响到这个客户程序,我们希望尽可能地避免这种耦合,因此接口需要进行隔离.