一、“开-闭”原则(OCP)对可变性封装
一个软件应该对扩展开放,对修改关闭。它的核心含意是:一个好的设计应该能够容纳新的功能需求的增加,但是增加的方式不是通过修改又有的模块(类),而是通过增加新的模块(类)来完成的。如果一个设计能够遵循OCP,那么就能够有效的避免上述的问题。
要实现OCP的关键是抽象。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改(closed for modification)的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。
http://www.cnblogs.com/jigee/archive/2006/08/12/475106.html
二、里氏替换原则(LSP)
LSP:LSP The The Liskov Substitution Principle。
若对于每一个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对T编写的程序P中,用o1替换o2后,程序P的行为功能不变,则S是T的子类型。
“Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.”——“继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。 该原则称为Liskov Substitution Principle——里氏替换原则。LSP原则是符合OCP原则应用程序的一项重要特性。
http://www.blogjava.net/ghawk/archive/2006/01/18/28545.html
三、依赖倒转原则(DIP)针对接口编程
高层模块不应该依赖于低层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。
四、接口隔离原则(ISP)恰当的划分角色和接口
一个没有经验的设计师往往想节省接口的数目,将一些功能相近或功能相关的接口合并,并将这看成是代码优化的一部分。
五、合成/聚合复用原则(CARP)尽量使用合成/聚合、尽量不使用继承
尽量使用合成/聚合、尽量不使用继承
定义:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的
六、SRP(Single Responsibility Principle 单一职责原则)
就一个类而言,应该仅有一个引起它变化的原因。
http://www.blogjava.net/ghawk/archive/2006/01/09/27312.aspx
http://www.blog999.com/c/562292.html
文章收藏:
面向对象五大设计原则:(1) www.java-asp.net/java/200510/t_41750.html
(2) www.java-asp.net/java/200511/t_44376.html
(3) www.java-asp.net/java/200511/t_44380.html