单一职责原则
单一职责原则(Single Responsibility Principle)
就一个类而言,应该仅有一个引起它变化的原因(ASD)。通俗的说,即一个类只负责一项职责,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,
就等于把这些职责耦合在一起,一个职责的变化就可以会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到
的破坏。
开放封闭原则
开放封闭原则(Open Close Principle)
开放-封闭原则就是要对扩展是开放的,对修改是封闭的。就是尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来
的代码能不动则不动。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。这就是“开放-封闭原则”的精神所在。
依赖倒转原则
依赖倒转原则(Dependence Inversion Principle)
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。总之,依赖倒置原则
就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。
在实际编程中,我们一般需要做到如下3点:
低层模块尽量都要有抽象类或接口,或者两者都有。
变量的声明类型尽量是抽象类或接口。
使用继承时遵循里氏替换原则。
里氏代换原则
里氏代换原则(Liskov Substitution Principle)
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的
子类,程序的行为没有变化。
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的参数要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格。
接口隔离原则
接口隔离原则(Interface Segregation Principle)
接建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大
的接口供所有依赖它的类去调用。通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
采用接口隔离原则要注意以下几点:
1)接口尽量小,但是要有适度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多。
2)为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。
3)提高内聚,减少对外交互,用最少的方法去完成最多的事情。
迪米特法则
迪米特法则(Law Of Demeter)
强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响。无论是面向过程编程还是面向对象编程,
只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。即:一个对象应该对其他对象保持最少的了解。