00_设计模式6大原则
【六大原则总览】
1.单一职责原则
2.里氏替换原则
3.依赖导致原则
4.接口隔离原则
5.迪米特法则
6.开闭原则
【原则一:单一职责原则】
英文全称:Single Responsibility Principle,简称SRP。
要求一个接口或类只有一个原因引起变化,就是一个接口或类只有一个原则,它就负责一件事情。
[ 好处 ]
* 类的复杂性降低,实现什么职责都有清晰明确的定义;
* 可读性提高,复杂性降低。
* 可维护性提高。
* 变更引起的风险降低。如果接口的定义职责做的很好,一个接口修改只对相应的实现类有影响,对其它接口没有影响,这对系统的扩展性和可维护性非常大的帮助。
【原则二:里氏替换原则】
首先分析一下继承的优点缺点;
[ 继承的优点 ]
* 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。
* 提高了代码的重用性。
* 子类可以形似父类,但又异于父类。
* 提高代码的扩展性,许多开源框架的扩展接口都是通过继承父类来完成的。
* 提高产品或项目的开放性。
[ 继承的缺点 ]
* 继承是侵入性的。只要继承,子类就必须拥有父类的所有属性和方法。
* 降低代码的灵活性,子类必须拥有父类的属性和方法,给子类添加了约束。
* 增强了代码的耦合性,当父类的常量、变量或方法修改时,就要考虑子类的修改。
[ 里氏替换原则的定义 ]
只要父类能出现的地方,子类就可以出现,而且替换给子类就不会出现任何的错误或异常,使用者不需要知道是子类还是父类,但是反过来是不可以的,有子类出现的地方,父类未必就可以。
[ 里氏替换原则的四层含义 ]
* 子类必须实现父类的方法。
* 子类必须有自己的个性
* 覆盖或实现或父类的方法时输入参数可以被放大。
* 覆写或实现父类的方法时输出结果可以被缩小。
【原则三:依赖倒置原则】
[ 在java语言中的表现 ]
* 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生。
* 接口或抽象类不依赖其实现类。
* 实现类依赖接口或抽象类。
【原则四:接口隔离原则】
接口隔离原则要求接口中的方法尽量少。(单一职责要求类和接口职责单一,注重的是职责,是业务逻辑上的划分)
【原则五:迪米特法则】
也称为最少知识原则,一个对象应该对其它对象由最少的了解,即一个类应该对自己需要耦合或调用的类知道的最少。
【原则六:开闭原则】
软件实体,应该对扩展开放,对修改关闭,含义就是一个原件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。