原则
单一职责原则 (SRP):每一个类应该专注于做一件事情。
开闭原则 (ASD):可以拓展,但是不可修改。(向扩展开放,向修改关闭)
里氏替换原则 (LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。
依赖倒置原则 (DIP):高层模块不应该依赖低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
迪米特原则 (LOD):一个软件实体应当尽可能少地与其他实体发生相互作用。
接口隔离原则 (ISP):供尽可能小的单独的接口。
组合/聚合复用原则:尽量使用合成/聚合达到复用,尽量少用继承。