类与类之间的耦合度越小,越有利于服用。
就一个类而言,应该仅有一个引起它变化的原因。
软件实体类(类,模块,函数等等)应该可以扩展,但是不可修改。
针对接口编程,不要对实现编程。
- 高层模块不应该依赖于低层模块,两个都应该依赖抽象
- 抽象不应该依赖细节,细节应该依赖于抽象。
子类型必须能够替换掉他们的父类型。
最小知识原则 如果两个类不必彼此直接通信,那么这两个类就应当发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
尽量使用合成/聚合,尽量不要使用类继承。 合成: 是一种强的‘拥有’关系,体现了严格的部分和整体的关系,整体和部分的声明周期一致。 聚合:是一种弱的‘拥有’关系,体现了A对象可以包含B对象,但B对象不是A对象的一部分。