1、接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
理解:不要让类去实现接口中该类不需要实现的方法。
实例:
//类A只需要功能m1,类B只需要功能m2,但是把接口定义太复杂,太臃肿,类A和类B都必须实现接口I中其他本类不需要的方法 interface I{ public void m1(); public void m2(); public void m3(); } class A implements I{ public void m1(){System.out.print("类A需要功能m1")}; public void m2(){}; public void m3(){}; } class B implements I{ public void m2(){System.out.print("类B需要功能m2")}; public void m1(){}; public void m3(){}; }
//采用接口隔离原则,将接口I拆分为独立的几个接口,然后让类A和类B分别去实现拥有他们所需功能的接口,这样类A和类B中也不会有多余的冗余代码 interface I1{ public void m1(); } interface I2{ public void m2(); } interface I3{ public void m3(); } class A implements I1{ public void m1(){System.out.print("类A需要功能m1")}; } class B implements I2{ public void m2(){System.out.print("类B需要功能m2")}; }
2、迪米特法则
定义:一个对象应该对其他对象保持最少的了解。
理解:掌握低耦合、高内聚的思想;尽量不要让类依赖类,如果依赖类了,尽量让被依赖的类方法public,成员private;陌生的、你不需要了解的类,尽量不要出现在你的局部变量中。
实例:迪米特法则经典实例,请看博客中的《代理模式--介绍、应用及代码》一文。点击打开链接
3、开闭原则
定义:一个软件实体如类、模块和函数应对扩展开放,对修改关闭。
理解:除非BUG,当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现变化。也就是你可以通过增加Public方法来扩展功能,但是不要修改已有代码,尤其是框架。开闭原则核心:用抽象构建框架,用实现扩展细节。
实例:将前面讲过的5种原则应用好了,开闭原则就实现了。
-----总结-----
单一职责原则:实现类要职责单一
里氏替换原则:尽量不要重写或重载父类,不要破坏继承体系
依赖倒置原则:多面向接口编程
接口隔离原则:设计接口要精简单一
迪米特法则:低耦合、高内聚,没必要去了解你所依赖的类或接口的全部,也不需要与你不想了解的类成为直接朋友。
开闭原则:总纲。对外扩展开放,修改关闭!!!
原文:http://blog.csdn.net/lulin27861/article/details/19803973