开闭原则:软件架构应该是对扩展开发,对修改关闭
里氏(Liskov)替换原则:任何基类可以出现的地方,派生类一定可以出现
依赖倒转原则:要依赖于抽象,不要依赖于实现
接口隔离原则:应当为客户提供尽可能小的接口,而不是提供大的接口。
组合、聚合复用原则:要尽量使用组合、聚合,而不是继承关系以达到复用的目的。
Demeter法则:一个软件实体应该与尽可能少的其他实体发生互相作用。
除此之外,还有一些需要注意的地方:
包与包之间不能够有循环依赖关系
不要重复自己:任何代码都只出现一次
保持简化的设计