设计模式七大原则
1.开闭原则:意味着模块的行为是可以扩展的,即当需求改变是,软件开发者可以对模块进行扩展,增加新的功能。在对模块行为进行扩展时,不允许改动模块中已经存在的类的源代码。
2.单一职责原则:不要存在多于一个类变更的原因。通俗说,即一个类只负责一项职责。
优点:可以降低复杂度,一个类只负责一项职责;提高类的可读性,提高系统的可维护性。
3.依赖倒转原则:高层模块不应该依赖低层模块,二者应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。
依赖倒转原则的核心思想是面向接口编程。在实际编程中,我们一般要做到如下3点:
(1)低层模块尽量都要有抽象类或接口,或者二者都有。
(2)变量的声明类型尽量是抽象类或接口。
(3) 使用继承时遵循里氏代换原则。
4.迪米特原则:一个对象应该对其他对象保持最少的了解。注意:既要做到结构清晰,又要高内聚低耦合。
5.接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。注意:
(1)接口尽量小,但是要有限度。
(2)为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。
(3)提高内聚,减少对外交互。
6.合成/聚合复用原则:尽量使用合成、聚合少使用继承的关系来达到复用的原则。
7.里氏代换原则:通俗说,即子类可以扩展父类的功能,但不能改变父类原有的功能。包括以下4层含义:
(1)子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
(2)子类中可以增加自己特有的方法。
(3)当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
(4)当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。