SOLID原则
S:单一职责原则 Single Responsibility Principle
修改一个类的原因只能有一个。
O:开闭原则 Open/closed Principle
对于扩展,类应该是“开放”的;对于修改,类则应是“封闭”的。
L:里氏替换原则 Liskov Substitution Principle
当你扩展一个类时, 记住你应该要能在不修改客户端代码的情况下将子类的对象作为父类对象进行传递。
I:接口隔离原则 Interface Segregation Principle
客户端不应被强迫依赖于其不使用的方法。
D:依赖倒置原则 Dependency Inversion Principle
高层次的类不应该依赖于低层次的类,两者都应该依赖于抽象接口。
抽象接口不应依赖于具体实现,具体实现应该依赖于抽象接口。
其他原则
迪米特法则(Law of Demeter,LoD)
最少知识原则(The Least Knowledge Principle,LKP)
只和你的密友谈话。
“密友”条件
- 该对象本身(this)
- 被当做方法的参数而传递进来的对象
- 此方法所创建或实例化的任何对象
- 对象的任何组件(类成员)
合成复用原则(Composite Reuse Principle,CRP)
组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)
多用组合,少用继承。
好莱坞原则(The Hollywood Principle)
别调用(打电话给)我们,我们会调用(打电话给)你