设计原则:
单一职责原则(SRP)
核心思想:一个类,最好只做一件事,只有一个引起它变化的原因。
建议:一个类只有一个引起它变化的原因,否则就应当考虑重构。
SRP由引起变化的原因决定,而不由功能职责决定。
开放封闭原则(OCP)
核心思想:对扩展开放,意味着有新的需求或变化时,可以对现在代码进行扩展,以适应新的情况。
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
依赖倒置原则(DIP)
核心思想:高层模块不应该依赖于底层模块,二者都应该依赖于抽象。
抽象不应该依赖于具体,具体应该依赖于抽象。
接口隔离原则(ISP)
核心思想:使用多个小的专门的接口,而不是使用一个大的总接口。
分离是接口隔离原则的重要方法,分为:
委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是会增加系统开销。
多重继承分离,通过接口多继承来实现客户需求。
建议:将功能相近的接口合并,可能造成接口污染,实现内聚的接口才是接口设计的基本原则。
能够保证系统扩展和修改的影响不会扩展到系统的其他部分,一定程度上保证了对开放封闭原则的遵守。
Liskov替换原则(LSP)
核心思想:子类必须能够替换其基类。
建议:Liskov替换原则是关于继承机制的设计原则,违反了Liskov替换原则就必然导致违反开放封闭原则。
子类的异常必须控制在父类可以预计的范围,否则将导致替换违规,违反了Liskov替换原则。