目的
- 代码重用性(相同功能的代码,不用多次编写)
- 可读性(编程规范性)
- 可扩展性(需要增加新的功能,非常方便)
- 可靠性(新增功能对原来的功能没有影响)
- 高内聚,低耦合
七大原则
- 单一职责(各行其职)
- 接口隔离原则
- 依赖倒转(倒置)原则(面向接口编程)
- 里氏替换原则(少用继承,确保不会去修改父类)
- 开闭原则(对扩展开放,对修改闭合)
- 迪米特法则(最小知道原则)
- 合成服用原则(尽量使用合成/聚合的方式,而不是使用继承)
核心思想
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起;
- 针对接口编程,而不是针对实现编程;
- 为了交互对象之间的松耦合设计而努力;
类型
- 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式;
- 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式;
- 行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式);
JDK 中典型的设计模式:https://www.cnblogs.com/jpfss/p/9764986.html