面向对象思想——面向对象设计原则
简称SOLID
1. 单一职责原则
职责定义为引起变化的原因。一个类,最好只做一件事,只有一个引起它的变化。不要为类实现过多的功能点,以保证实体只有一个引起它变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度。
2. 开放封闭原则
对扩展开放,对修改封闭的。体现在两个方面1、对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。2、对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对其进行任何尝试的修改。
实现的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以就是开放的。
3. 替换原则
子类必须能够替换其基类。继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。将基类替换为子类,程序的行为不会发生任何变化。这一约束反过来则是不成立的。继承并且覆盖超类方法的时候,子类中的方法的可见性必须等于或者大于超类中的方法的可见性,子类中的方法所抛出的受检异常只能是超类中对应方法所抛出的受检异常的子类。
4. 依赖倒置原则
依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象。依赖于抽象,就是对接口编程,不要对实现编程。
依赖一定会存在于类与类、模块与模块之间。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口,而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。
抽象的稳定性决定了系统的稳定性,因为抽象是不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心。
5. 接口隔离原则
一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法。一个接口代表一个角色,不应当将不同的角色都交给一个接口。
分离的手段主要有以下两种:1、委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是会增加系统的开销。2、多重继承分离,通过接口多继承来实现客户的需求,这种方式是较好的。
参考:http://blog.csdn.net/luxiaoxun/article/details/8041885