对拓展开放,对修改关闭
不要存在多余一个导致类变更的原因,类和对象的职责应该单一
高层模块不依赖底层模块,二者都依赖其抽象。抽象不依赖于细节,细节依赖于抽象。(依赖注入) 通过公共的抽象类实现上下层解耦
每个接口做成专门化,而不使用单一的总接口
类对其他类的信息应该知道得尽量少
子类对象应该在任何场景都能代替父类对象
多用组合,少用继承