单一职责(Single Responsibility Principle)
每个方法,每个类,每个框架,都只负责一件事情 (There should never be more than one reason for a class to change)
总结:
1,不要为类实现过多的功能点,以保证实体只有一个引起它变化的原因。
开闭原则(Open Closed Principle)
软件实体(包括类、模块、功能等)应该对扩展开放,但是对修改关闭(Software entities (classes, modules, functions) should be open for extension but closed for modification)
总结
1,一个实体是允许在 【不改变它的源代码】 的前提下 变更它的行为
接口隔离原则(Interface Segregation Principle)
其一是不应该强行要求客户端依赖于它们不用的接口;其二是类之间的依赖应该建立在最小的接口上面(Clients should not be forced to depend upon interfaces that they don't use; The dependency of one class to another one should depend on the smallest possible interface)
总结
1,客户端需要什么接口,就依赖什么接口,不需要的就不依赖, 如果客户端依赖了它们不需要的接口,那么这些客户端程序就面临不需要的接口变更引起的客户端变更的风险,这样就会增加客户端和接口之间的耦合程度,显然与“高内聚、低耦合”的思想相矛盾
2,使用多个专门的接口,比使用单一的接口要好。
依赖倒置原则(Dependence Inversion Principle)
高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions)
总结
1,模块间的依赖是通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
》高层模块:调用别的方法的模块
》底层模块:被其他方法调用的
2,接口和抽象类不应该依赖于实现类,而实现类依赖接口或抽象类
3,对抽象进行编程,不要对实现进行编程
迪米特法则(Law of Demeter)
一个软件实体应当尽可能少地与其他实体发生相互作用 ;一个对象应当对其他对象有尽可能的了解,不和陌生人说话。
总结: