设计模式是系统服务设计中针对常见场景的一种解决方案，可以解决功能逻辑开发中遇到的共性问题。

设计模式是一种开发指导思想，不要拘泥于某种已经存在的固定代码格式，而要根据实际的业务场景做出改变。

按照实现形式，设计模式可以分为三类：

- **创建型模式**

  提供创建对象的机制，提升已有代码的灵活性和可复用性

- **结构型模式**

  介绍如何将对象和类组装成较⼤大的结构， 并同时保持结构的灵活和⾼高效

- **行为模式**

  负责对象间的高效沟通和职责传递委派

设计模式有六大设计原则：

1. **单一职责原则**

   它规定一个类应该只有一个发生变化的原因

2. **开闭原则**

   开闭原则规定软件对象中的对象、类、模块和函数对扩展应该是开放的，但是对于修改是封闭的。这意味着应该用抽象定义结构，用具体实现扩展细节，核心思想可以理解为面向抽象编程。

3. **里氏替换原则**

   如果 S 是 T 的子类型，那么所有 T 类型的对象都可以在不破坏程序的情况下被 S 类型的对象替换。

   简单来说，子类可以扩展父类的功能，但不能改变父类原有的功能。也就是说：当子类继承父类时，除添加新的方法且完成新的功能外，尽量不要重写父类的方法。这句话包括了四点含义：

   - 子类可以实现父类的抽象方法，但不能覆盖父类的非抽象方法
   - 子类可以增加自己特有的方法
   - 当子类的方法重载父类的方法时，方法的前置条件（即方法的输入参数）要比父类的方法更宽松
   - 当子类的方法实现父类的方法（重写、重载或实现抽象方法）时，方法的后置条件（即方法的输出或返回值）要比父类的方法更严格或与父类的方法相等

   里氏替换原则的作用：

   - 里氏替换原则是实现开闭原则的重要方式之一
   - 解决了继承中重写父类造成的可复用性变差的问题
   - 是动作正确性的保证，即类的扩展不会给已有的系统引入新的错误，降低了代码出错的可能性
   - 加强程序的健壮性，同时变更时可以做到非常好的兼容性，提高程序的维护性、可扩展性，降低需求变更时引入的风险

4. **迪米特法则原则**

   迪米特法则又称为最小知道原则，是指一个对象类对于其他对象类来说，知道的越少越好。也就是说，两个类直接不要有过多的耦合关系，保持最少关联性。

5. **接口隔离原则**

   一个类对另一个类的依赖应该建立在最小的接口上

   接口隔离原则要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口，让接口中只包含客户感兴趣的方法。

   再具体应用接口隔离原则时，应根据以下几个规则衡量：

   - 接口尽量小，但是要有限度。一个接口只服务与一个子模块或业务逻辑。
   - 为依赖接口的类定制服务。只提供调用者需要的方法，屏蔽不需要的方法。
   - 了解环境，拒绝盲从。
   - 提高内聚，减少对外交互。

6. **依赖倒置原则**

   依赖倒置原则是指在设计代码架构时，高层模块不应该依赖于底层模块，二者都应该依赖于抽象。抽象不应该依赖于细节，细节应该依赖于抽象。

   依赖倒置原则是实现开闭原则的重要途径之一，它降低了类之间的耦合，提高了系统的稳定性和可维护性。

































