内功心法专题-设计模式-0、设计模式总结
1. 聚合接口或抽象类
1.1. 可以调用其子类的方法
1.1.1. 中介者模式⭐️🔴+ 构造导入 + 集合 +【2 个聚合】1 对 N 型
[[内功心法专题-设计模式-20、中介者模式#2 2 UML]]
相当于相互聚合
代码:
[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/mediator/MediatorStructure.java]]
1.1.2. 桥接模式⭐️🔴+ 构造导入 - N 到 N 型
设计模式-10、桥接模式代码: [[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/builder/demo2/Phone.java]]
1.1.3. 观察者模式⭐️🔴+ 集合
[[内功心法专题-设计模式-19、观察者模式#3 1 1 UML⭐️🔴]]
代码:
[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/observer/SubscriptionSubject.java]]
1.1.4. 状态模式⭐️🔴+【2 个聚合】+ setter 导入
设计模式-18、状态模式相互聚合
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/state/after/LiftState.java]]
调来调去就相当于各个具体状态类之间切换了 ❕
1.1.5. 命令模式⭐️🔴+ 构造导入 + 集合 +【2 个聚合】
[[内功心法专题-设计模式-16、命令模式#4 2 智能家居⭐️🔴]]
代码:[[RemoteController.java]]
1.1.6. 策略模式⭐️🔴+ 构造导入
[[内功心法专题-设计模式-15、策略模式#3 1 原理图]]
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/strategy/SalesMan.java]]
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/DesignPattern/src/com/atguigu/strategy/improve/Duck.java]]
1.1.7. 享元模式⭐️🔴+ 集合
[[内功心法专题-设计模式-13、享元模式#2 3 UML图示⭐️🔴]]
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/flyweight/BoxFactory.java]]
1.1.8. 装饰者模式⭐️🔴+『继承』+ 构造导入
[[内功心法专题-设计模式-9、装饰者模式#2 1 ⭐️🔴 UML图示]]
代码:[[Decorator.java]]
组合模式也是元素之间有 2 种关系,聚合 + 继承
1.1.9. 适配器模式⭐️🔴+『继承』
设计模式-8、适配器模式代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/DesignPattern/src/com/atguigu/adapter/objectadapter/VoltageAdapter.java]]
1.1.10. 建造者模式⭐️🔴+【2 个聚合】+ 构造导入
[[内功心法专题-设计模式-6、建造者模式#2 2 2 实现逻辑⭐️🔴]]
代码: [[HouseBuilder.java]]
代码:[[Builder.java]]
1.2. 可以设置为链式结构
1.2.1. 责任链模式⭐️🔴+ 聚合自身
代码:[[Approver.java]]
[[内功心法专题-设计模式-17、责任链模式#2 2 UML⭐️🔴]]
1.3. 可以组成递归结构
1.3.1. 组合模式⭐️🔴+ 集合 +『继承』
[[内功心法专题-设计模式-12、组合模式#2 2 ⭐️🔴UML图示]]
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/combination/MenuComponent.java]]
1.3.2. 解释器模式⭐️🔴+『继承』+ 多个
[[内功心法专题-设计模式-24、解释器模式#2 2 UML⭐️🔴]]
代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/design_patterns/src/main/java/com/itheima/pattern/interpreter/Minus.java]]

2. 涉及 ifelse 的设计模式
2.1. 适配器模式
设计模式-8、适配器模式2.2. 模板方法模式
[[内功心法专题-设计模式-14、模板方法模式]]
2.3. 策略模式
[[内功心法专题-设计模式-15、策略模式]]
2.4. 责任链模式
[[内功心法专题-设计模式-17、责任链模式]]
2.5. 状态模式
设计模式-18、状态模式3. 涉及环境类 Context 的设计模式
策略模式
[[内功心法专题-设计模式-15、策略模式]]
状态模式
解释器模式
[[内功心法专题-设计模式-24、解释器模式]]
4. 涉及功能增强的设计模式
装饰者模式
[[内功心法专题-设计模式-9、装饰者模式]]
代理模式
适配器模式
设计模式-8、适配器模式5. 涉及动态变化的设计模式
策略模式
[[内功心法专题-设计模式-15、策略模式]]
装饰者模式
[[内功心法专题-设计模式-9、装饰者模式]]
6. 满足开闭原则的设计模式
❕ ^8yg365
6.1. 工厂方法 - 将普通工程抽象
[[内功心法专题-设计模式-4、工厂模式]]
6.2. 建造者模式
[[内功心法专题-设计模式-6、建造者模式]]
6.3. 装饰者模式
[[内功心法专题-设计模式-9、装饰者模式]]
6.4. 组合模式
[[内功心法专题-设计模式-12、组合模式]]
6.5. 模板方法模式
[[内功心法专题-设计模式-14、模板方法模式]]
6.6. 策略模式
[[内功心法专题-设计模式-15、策略模式]]
6.7. 命令模式
[[内功心法专题-设计模式-16、命令模式]]
6.8. 责任链模式
[[内功心法专题-设计模式-17、责任链模式]]
6.9. 迭代器模式
[[内功心法专题-设计模式-21、迭代器模式]]
6.10. 解释器模式
[[内功心法专题-设计模式-24、解释器模式]]
7. 违反开闭原则的设计模式
命令模式 不太友好
[[内功心法专题-设计模式-22、访问者模式]]
访问者模式 (还违背了依赖倒转原则)
[[内功心法专题-设计模式-11、外观模式]]
8. 1 对 1 模式 (提前关联)
8.1. 工厂方法模式
[[内功心法专题-设计模式-4、工厂模式]]
8.2. 适配器模式
设计模式-8、适配器模式8.3. 迭代器模式
[[内功心法专题-设计模式-21、迭代器模式]]
9. N 对 N 模式
[[内功心法专题-设计模式-22、访问者模式]]
10. 1 对 N 模式
[[内功心法专题-设计模式-6、建造者模式]]
11. 包含继承关系的设计模式
11.1. 两个元素之间继承
[[内功心法专题-设计模式-12、组合模式]]
[[内功心法专题-设计模式-9、装饰者模式]]
[[内功心法专题-设计模式-24、解释器模式]]
11.2. 涉及三个元素
设计模式-8、适配器模式12. 变与不变之间
策略模式
模板方法模式
建造者模式
责任链模式
状态模式
享元模式