目的

  • 代码重用性(相同功能的代码,不用多次编写)
  • 可读性(编程规范性)
  • 可扩展性(需要增加新的功能,非常方便)
  • 可靠性(新增功能对原来的功能没有影响)
  • 高内聚,低耦合

七大原则

  • 单一职责(各行其职)
  • 接口隔离原则
  • 依赖倒转(倒置)原则(面向接口编程)
  • 里氏替换原则(少用继承,确保不会去修改父类)
  • 开闭原则(对扩展开放,对修改闭合)
  • 迪米特法则(最小知道原则)
  • 合成服用原则(尽量使用合成/聚合的方式,而不是使用继承)

核心思想

  • 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起;
  • 针对接口编程,而不是针对实现编程;
  • 为了交互对象之间的松耦合设计而努力;

类型

  • 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
  • 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
  • 行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式);

JDK 中典型的设计模式:https://www.cnblogs.com/jpfss/p/9764986.html