1. 开放封闭原则: 对扩展开放,对修改封闭。
2. 迪米特原则: 一个对象应该对其他对象保持最少的了解。
3. 接口分隔原则: 高层模块不应该被强制依赖于它们不使用的接口,即保证接口的纯洁性。
4. 单一职责原则: 一个类应该只有一个职责,一个函数只做一件事。
5. 里氏替换原则: 子类必须能够替换其父类,并且替换后不会影响程序的正确性。子类可以扩展父类的功能但不能改变父类原有的功能。
6. 依赖倒置原则: 高层模块不应该依赖于低层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
7. 组合/聚合复用原则: 优先使用组合和聚合的方式来实现代码的复用,而不是使用继承。