就一个类而言,应该仅有一个引起他变化的原因
如果一个类承担的职责过多,就等于把这写职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
如果软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
高层模块不应该依赖于底层模块,两个都应该依赖抽象
抽象不应该依赖细节,细节应该依赖于抽象
子类型必须能够替代他们的父类型