单一职责原则
一个类、方法、接口只负责一项职责
如果一个类中有一个以上的职责,这些职责就会耦合在一起,影响其复用性。
遵循单一职责原则,当修改一个类时,可以降低对其它功能的影响。
接口隔离原则
客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
提供尽可能小的接口,实现的时候只实现自己需要的接口。
依赖倒转原则(在java中抽象就是指接口或者抽象类,细节就是具体的实现类)
1、高层模块不应该依赖低层模块,二者都应该依赖抽象
2、抽象不应该依赖细节,细节应该依赖抽象依赖
3、依赖倒转的中心思想是依赖接口编程。
4、相对于细节的多变性,抽象的东西要稳定得多。以抽象为基础搭建的架构要比以细节为基础搭建的架构稳定的多
5、使用接口或者抽象类的目的就是制定规范,具体的实现交给它们的子类或者实现类去完成。
6、变量的声明类型尽量是抽象类或者接口,这样我们变量的引用和实际对象间,就存在一个缓冲区,利于程序扩展和优化。
里氏替换原则
在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法。
任何父类出现的地方都可以用子类来代替。
子类可以扩展父类的功能,但不能修改父类原有的功能。
开闭原则
软件实体(类、模块和函数)应该对扩展开放,对修改关闭。
当软件需求有变化时,应该通过扩展软件实体来实现,而不是修改现有的代码。
其他原则都是服务于开闭原则的。
迪米特法则
1、又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部,
除了对外提供的public方法外,不对外泄露任何信息。
2、一个对象应该与其他对象保持最少的了解。
3、和自己没有直接关联的类,不要引用。
合成复用原则
尽量使用组合、聚合的方式,而不是使用继承来达到软件复用的目的。