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]]

image.png

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]]

image.png

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]]

image.png

image.png

调来调去就相当于各个具体状态类之间切换了%%
1157-🏡⭐️◼️状态流转逻辑 ?🔜MSTM📝 Client 构造 Context 时传入初始状态,调用 Context 的 open(e.g.) 方法时,实际调用的是刚刚 setter 给 Context 的 ConcreteState 的 open 方法,在 ConcreteState 的 open 方法中,会使用父类 State 聚合的 Context,给 Context setter 另一个 ConcreteState,然后再调用这个 ConcreteState 的方法,具体什么方法就看业务逻辑了,如此达到了状态流转的目的。同时将状态流转逻辑和对象封装在一起,状态◼️⭐️-point-202302071157%%

1.1.5. 命令模式⭐️🔴+ 构造导入 + 集合 +【2 个聚合】

[[内功心法专题-设计模式-16、命令模式#4 2 智能家居⭐️🔴]]

代码:[[RemoteController.java]]

image.png

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]]

image.png

代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/DesignPattern/src/com/atguigu/strategy/improve/Duck.java]]
image.png

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]]

image.png

1.1.8. 装饰者模式⭐️🔴+『继承』+ 构造导入

[[内功心法专题-设计模式-9、装饰者模式#2 1 ⭐️🔴 UML图示]]

代码:[[Decorator.java]]

image.png

组合模式也是元素之间有 2 种关系,聚合 + 继承

1.1.9. 适配器模式⭐️🔴+『继承』

设计模式-8、适配器模式

代码:[[pages/002-schdule/001-Arch/001-Subject/013-DemoCode/DesignPattern/src/com/atguigu/adapter/objectadapter/VoltageAdapter.java]]

image.png

1.1.10. 建造者模式⭐️🔴+【2 个聚合】+ 构造导入

[[内功心法专题-设计模式-6、建造者模式#2 2 2 实现逻辑⭐️🔴]]

image.png

代码: [[HouseBuilder.java]]
image.png

代码:[[Builder.java]]
image.png

1.2. 可以设置为链式结构

1.2.1. 责任链模式⭐️🔴+ 聚合自身

代码:[[Approver.java]]

[[内功心法专题-设计模式-17、责任链模式#2 2 UML⭐️🔴]]

image.png

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]]

image.png

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]]

image.png

2. 涉及 ifelse 的设计模式

2.1. 适配器模式

设计模式-8、适配器模式

2.2. 模板方法模式

[[内功心法专题-设计模式-14、模板方法模式]]

2.3. 策略模式

[[内功心法专题-设计模式-15、策略模式]]

2.4. 责任链模式

[[内功心法专题-设计模式-17、责任链模式]]

2.5. 状态模式

设计模式-18、状态模式

3. 涉及环境类 Context 的设计模式

策略模式
[[内功心法专题-设计模式-15、策略模式]]
状态模式

设计模式-18、状态模式

解释器模式
[[内功心法专题-设计模式-24、解释器模式]]

4. 涉及功能增强的设计模式

装饰者模式
[[内功心法专题-设计模式-9、装饰者模式]]
代理模式

设计模式-7、代理模式

适配器模式

设计模式-8、适配器模式

5. 涉及动态变化的设计模式

策略模式
[[内功心法专题-设计模式-15、策略模式]]
装饰者模式
[[内功心法专题-设计模式-9、装饰者模式]]

6. 满足开闭原则的设计模式

%%
▶1.🏡⭐️◼️【🌈费曼无敌🌈⭐️第一步⭐️】◼️⭐️-point-20230522-1235%%
❕ ^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、访问者模式]]
访问者模式 (还违背了依赖倒转原则)
image.png

[[内功心法专题-设计模式-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、组合模式]]
image.png

[[内功心法专题-设计模式-9、装饰者模式]]
image.png

[[内功心法专题-设计模式-24、解释器模式]]

11.2. 涉及三个元素

设计模式-8、适配器模式

image.png

12. 变与不变之间

策略模式
模板方法模式
建造者模式
责任链模式
状态模式
享元模式

13. 实战经验

14. 参考与感谢