面向对象设计的原则
多聚合,少继承
低耦合,高内聚
1、单一职责原则(SRP,Single Responsibility Principal)
一个类,应该仅有一个引起它变化的原因。不要将变化原因不同的职责封装在一起,而应该分离。这遵循了“高内聚、低耦合”的思想。
避免将相同的职责分散在不同的类中,和避免一个类实现了过多的职责一样重要。
2、开放封闭原则(OCP,Open Closed Principal)
对修改封闭:意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
对扩展开放:意味着如果有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定,类依赖于抽象,则修改就是封闭的,而通过继承、覆写抽象体的方法,则可以实现扩展。
3、依赖倒置原则(DIP,Dependency Inversion Principal)
依赖于抽象,而不依赖于具体,因为抽象相对稳定。
此原则体现在:
· 高层模块不应该依赖于低层模块,二者都应该依赖于抽象;
· 抽象不应该依赖于具体,具体应该依赖于抽象。
规则建议:
· 抽象的稳定性决定了系统的稳定性,因为抽象是保持不变的,依赖抽象更是面向对象设计的精髓,也是依赖倒置原则的核心思想;
· 有些时候权衡细节也是在所难免的,方法不是一成不变的,应该具体情况具体分析;
· 依赖于抽象就是针对接口编程,而不是针对实现编程。
4、接口隔离原则(ISP,Interface Segregation Principal)
尽量应用专门的接口,而不是单一的总接口,接口应该面向用户,将依赖建立在最小的接口上。
· 将功能相近的接口合并,应实现内聚的接口,避免出现“胖”接口;
· 一个类对另一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染;
· 接口隔离原则能够保证系统扩展和修改的影响不会扩展到系统的其他部分,一定程度上是对开放封闭原则的遵守。
5、Liskov替换原则(LSP,Liskov Substitution Principal)
子类必须能够替换其基类。
6、合成/聚合复用原则(CARP,Composite/Aggregate Reuse Principal)
在新对象中聚合已有对象,使之成为新对象的成员,从而通过操作这些对象达到复用的目的。合成方式较继承方式耦合更松散,所以应少继承、多聚合。
7、迪米特法则(LoD,Law of Demeter)
又叫最小知识原则,指软件实体应该尽可能少的和其他软件实体发生相互作用。
出处:http://www.cnblogs.com/RockyMyx/
本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。