面向对象设计主要是为了软件的可维护、可扩展、可复用和灵活性好。在面对新的需求和更改的时候可以用最小的代价来达到最好的效果。

在设计模式中对面向对象设计有了更进一步的理解。下面先总结一下面向对象设计的六大原则吧。


开放-封闭原则

在我们设计的时候要尽量保持开放-封闭原则。对于增加需求等情况要尽量扩展而不要对类进行修改,避免因为修改而造成不必要的麻烦。开放封闭原则是所有面向对象原则的核心。


单一职责原则

单一职责原则就是一个类只负责一个职责,仅有一个引起它变化的原因。降低类的耦合。

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化就有可能使软件的各个方面都收到影响,无疑这样是非常糟糕的。如果一个类具有多余一个的职责,就应该考虑类的分离。


里氏代换原则

一个软件实体如果使用的是一个父类的话,那么一定使用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说在软件里面,把父类都替换成它的子类,程序的行为没有变化。

也正是因为这个原则,使得继承复用称为可能,只有当子类可以替换点父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能在父类的基础上增加新的行为。里氏代换原则是实现开放封闭原则的具体规范。这是因为实现开放封闭原则关键是抽象,而继承关系又是抽象的一种具体实现。


依赖倒转原则

依赖倒转原则即抽象不应该依赖细节,细节应该依赖于抽象。高层模块不应该依赖底层模块,两个都应该依赖抽象。其实就是要针对抽象进行编程,不要对实现进行编程。减少耦合。


聚合复用原则

尽量使用合成/聚合,尽量不要使用类继承。优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。


迪米特法则

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则的根本思想是强调了类之间的松耦合。


总的来说这几个原则都是为了减少耦合,能让软件面对需求的时候用最小的代价来获得最大的改善。编程的时候要面向抽象编程,而不是依赖于细节。