图床更新,请注意查看readme

This commit is contained in:
youthlql
2022-07-24 19:36:01 +08:00
parent 618eb5f343
commit 130c2ff4bf
59 changed files with 818 additions and 10839 deletions

View File

@@ -11,7 +11,7 @@ categories:
- 04.结构型
keywords: 设计模式,代理模式,桥接模式,装饰器模式,适配器模式
description: 对代理模式桥接模式装饰器模式适配器模式这4个模式进行了比较详细的讲述。其实学习设计模式主要是为了后序看源码
cover: 'https://npm.elemecdn.com/lql_static@latest/logo/design_patterns.jpg'
cover: 'https://upyunimg.imlql.cn/lql_static@latest/logo/design_patterns.jpg'
abbrlink: 926a065c
date: 2021-07-04 00:51:58
---
@@ -608,7 +608,7 @@ IUserController userController = (IUserController) proxy.createProxy(new UserCon
现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0001.png"/>
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0001.png"/>
@@ -616,7 +616,7 @@ IUserController userController = (IUserController) proxy.createProxy(new UserCon
传统方法对应的类图
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0007.png"/>
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0007.png"/>
1. 扩展性问题(**类爆炸**),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。
2. 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.
@@ -933,7 +933,7 @@ public class DriverManager {
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0002.png">
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0002.png">
@@ -1112,7 +1112,7 @@ public class TrivialNotification extends Notification {
### 方案一
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0003.png"/>
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0003.png"/>
@@ -1127,7 +1127,7 @@ public class TrivialNotification extends Notification {
前面分析到方案 1 因为咖啡单品+调料组合会造成类的倍增,因此可以做改进,将调料内置到 Drink 类,这样就不会造成类数量过多。从而提高项目的维护性(如图)
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0004.png">
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0004.png">
@@ -1142,7 +1142,7 @@ public class TrivialNotification extends Notification {
### 装饰器模式代码
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0005.png"/>
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0005.png"/>
#### Drink【抽象类-主体Component】
@@ -1390,7 +1390,7 @@ Java IO 类库非常庞大和复杂,有几十个类,负责 IO 数据的读
针对不同的读取和写入场景Java IO 又在这四个父类基础之上,扩展出了很多子类。具体如下所示:
<img src="https://npm.elemecdn.com/youthlql@1.0.0/design_patterns/structural_type/04.01/0006.png"/>
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/structural_type/04.01/0006.png"/>