设计原则是设计模式所遵循的规则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。
# 单一职责(Single Responsibility Principle - SRP)
一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
一个函数,只用来干一件事,承担了过多的责任也就意味着多个功能的耦合。多个函数共同组成复杂的逻辑
# 开闭原则(Open Closed Principle - OCP)
对外开放,对内封闭
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
# 里氏替换(Liskov Substitution Principle - LSP)
子类可以扩展父类的功能,但不能改变父类原有的功能
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
# 接口隔离(Interface Segregation Principle - ISP)
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口,根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可,接口隔离根本在于不要强迫客户端程序依赖他们不需要使用的方法
# 依赖倒置(Dependence Inversion Principle - DIP)
依赖倒置原则的核心思想是面向接口编程,不应该面向实现类编程。
也就是使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不是使用具体的类
# 总结
设计原则简称SOLID原则,方便记忆。同时还有一些不常用的设计原则。如:组合/聚合复用原则,无环依赖原则,共同重用原则;
SOLID 可以简单概括为六个字,即“高内聚,低耦合”:
- 高层模块不依赖底层模块,即为依赖反转原则。
- 内部修改关闭,外部扩展开放,即为开放封闭原则。
- 聚合单一功能,即为单一功能原则。
- 低知识要求,对外接口简单,即为迪米特法则。
- 耦合多个接口,不如独立拆分,即为接口隔离原则。
- 合成复用,子类继承可替换父类,即为里式替换原则。