mirror of
https://github.com/youthlql/JavaYouth.git
synced 2026-03-13 21:33:42 +08:00
图床更新,请注意查看readme
This commit is contained in:
@@ -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"/>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user