基础编程学习快乐每一天
首页
留言
Siddim.com
当前位置:
首页
>
编程知识库
>
后端开发知识
>
设计模式是什么鬼(门面)
设计模式是什么鬼(门面)
阅读
1
2018-09-03
开门见山,门,建筑物的入口,面,脸也。门面(
Facade
),通常指店铺的门头外表部分,当然一定要临街才是好的商铺,在人流量大的地方营造更好的视觉冲击,这样会有更多等等机会暴露给潜在顾客,否则只能是靠“酒香不怕巷子深”,靠味道来吸引人了。
当然除了光鲜亮丽的外表,更重要的是门店提供的服务了。就拿餐饮来举例吧,如果没有这些门店我们都怎样吃饭呢?我们自己做又不会,算了还是找女友下厨吧。很简单分三步走,首先找菜贩买菜,其次女友下厨,最后吃完洗碗,打完收工代码如下。
public
%
20class
%
20VegVendor
%
20
%
7B
//%
E8
%
8F
%
9C
%
E8
%
B4
%
A9
%
E5
%
AD
%
90
%
0A
%
0A
%
20
%
20
%
20
%
20public
%
20void
%
20sell
()%
7B
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20System
.
out
.
println
(%
22
%
E8
%
8F
%
9C
%
E8
%
B4
%
A9
%
E5
%
AD
%
90
%
E5
%
8D
%
96
%
E8
%
8F
%
9C
%
E3
%
80
%
82
%
E3
%
80
%
82
%
E3
%
80
%
82
%
22
);%
0A
%
20
%
20
%
20
%
20
%
7D
%
0A
%
0A
%
7D
%
0A
public
%
20class
%
20GirlFriend
%
20
%
7B
//%
E5
%
A5
%
B3
%
E5
%
8F
%
8B
%
0A
%
0A
%
20
%
20
%
20
%
20public
%
20void
%
20cook
()%
7B
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20System
.
out
.
println
(%
22
%
E5
%
A5
%
B3
%
E5
%
8F
%
8B
%
E7
%
83
%
B9
%
E9
%
A5
%
AA
%
E3
%
80
%
82
%
E3
%
80
%
82
%
E3
%
80
%
82
%
22
);%
0A
%
20
%
20
%
20
%
20
%
7D
%
0A
%
0A
%
7D
%
0A
public
%
20class
%
20Me
%
20
%
7B
%
0A
%
0A
%
20
%
20
%
20
%
20public
%
20void
%
20eat
()%
7B
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20System
.
out
.
println
(%
22
%
E6
%
88
%
91
%
E5
%
8F
%
AA
%
E4
%
BC
%
9A
%
E5
%
90
%
83
%
E3
%
80
%
82
%
E3
%
80
%
82
%
E3
%
80
%
82
%
22
);%
0A
%
20
%
20
%
20
%
20
%
7D
%
0A
%
0A
%
20
%
20
%
20
%
20public
%
20static
%
20void
%
20main
(
String
%
5B
%
5D
%
20args
)%
20
%
7B
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
89
%
BE
%
E8
%
8F
%
9C
%
E8
%
B4
%
A9
%
E5
%
AD
%
90
%
E4
%
B9
%
B0
%
E8
%
8F
%
9C
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20VegVendor
%
20vv
%
20
=%
20new
%
20VegVendor
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20vv
.
sell
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
89
%
BE
%
E5
%
A5
%
B3
%
E5
%
8F
%
8B
%
E5
%
81
%
9A
%
E9
%
A5
%
AD
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20GirlFriend
%
20gf
%
20
=%
20new
%
20GirlFriend
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20gf
.
cook
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
88
%
91
%
E5
%
8F
%
AA
%
E4
%
BC
%
9A
%
E5
%
90
%
83
%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20Me
%
20me
%
20
=%
20new
%
20Me
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20me
.
eat
();%
0A
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E8
%
B0
%
81
%
E6
%
B4
%
97
%
E7
%
A2
%
97
%
E5
%
91
%
A2
%
EF
%
BC
%
9F
%
E4
%
B8
%
80
%
E5
%
9C
%
BA
%
E6
%
88
%
98
%
E5
%
9C
%
BA
%
E4
%
B8
%
80
%
E8
%
A7
%
A6
%
E5
%
8D
%
B3
%
E5
%
8F
%
91
%
E2
%
80
%
A6
%
E2
%
80
%
A6
%
0A
%
20
%
20
%
20
%
20
%
7D
%
0A
%
7D
%
0A
期盼总是美好的……
可现实是残酷的……恩,不管怎样至少我们是把饭给吃完了,不吃完也不行啊。
其实我们不该找女友做饭的,而是应该雇一个专业厨师,可这下来得多大花费啊,太划不来了,也许还得我们自己洗碗……哎。其实我们也不想麻烦,还是找门店来解决吧,至于那些买菜啊,烹饪啊,洗碗收拾桌子啊我们统统都不用管了,门店可以进行资源整合与调度,这样我们吃饭就变得如此简单了,只需要付钱就行了,毕竟我们只会吃。
%
201public
%
20class
%
20Facade
%
20
%
7B
%
0A
%
202
%
0A
%
203
%
20
%
20
%
20
%
20private
%
20VegVendor
%
20vv
;%
0A
%
204
%
20
%
20
%
20
%
20private
%
20Chef
%
20chef
;%
0A
%
205
%
20
%
20
%
20
%
20private
%
20Waiter
%
20waiter
;%
0A
%
206
%
20
%
20
%
20
%
20private
%
20Cleaner
%
20cleaner
;%
0A
%
207
%
0A
%
208
%
20
%
20
%
20
%
20public
%
20Facade
()%
20
%
7B
%
0A
%
209
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20this
.
vv
%
20
=%
20new
%
20VegVendor
();%
0A10
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E5
%
BC
%
80
%
E9
%
97
%
A8
%
E5
%
89
%
8D
%
E5
%
B0
%
B1
%
E6
%
89
%
BE
%
E8
%
8F
%
9C
%
E8
%
B4
%
A9
%
E5
%
AD
%
90
%
E5
%
87
%
86
%
E5
%
A4
%
87
%
E5
%
A5
%
BD
%
E8
%
94
%
AC
%
E8
%
8F
%
9C
%
0A11
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20vv
.
sell
();%
0A12
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E5
%
BD
%
93
%
E7
%
84
%
B6
%
E8
%
BF
%
98
%
E5
%
BE
%
97
%
E9
%
9B
%
87
%
E4
%
BD
%
A3
%
E5
%
A5
%
BD
%
E5
%
90
%
84
%
E7
%
B1
%
BB
%
E9
%
A5
%
AD
%
E5
%
BA
%
97
%
E6
%
9C
%
8D
%
E5
%
8A
%
A1
%
E4
%
BA
%
BA
%
E5
%
91
%
98
%
0A13
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20this
.
chef
%
20
=%
20new
%
20Chef
();%
0A14
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20this
.
waiter
%
20
=%
20new
%
20Waiter
();%
0A15
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20this
.
cleaner
%
20
=%
20new
%
20Cleaner
();%
0A16
%
20
%
20
%
20
%
20
%
7D
%
0A17
%
0A18
%
20
%
20
%
20
%
20public
%
20void
%
20provideService
()%
7B
%
0A19
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
8E
%
A5
%
E5
%
BE
%
85
%
EF
%
BC
%
8C
%
E5
%
85
%
A5
%
E5
%
BA
%
A7
%
EF
%
BC
%
8C
%
E7
%
82
%
B9
%
E8
%
8F
%
9C
%
0A20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20waiter
.
order
();%
0A21
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
89
%
BE
%
E5
%
8E
%
A8
%
E5
%
B8
%
88
%
E5
%
81
%
9A
%
E9
%
A5
%
AD
%
0A22
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20chef
.
cook
();%
0A23
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E4
%
B8
%
8A
%
E8
%
8F
%
9C
%
0A24
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20waiter
.
serve
();%
0A25
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20
//%
E6
%
94
%
B6
%
E6
%
8B
%
BE
%
E6
%
A1
%
8C
%
E5
%
AD
%
90
%
EF
%
BC
%
8C
%
E6
%
B4
%
97
%
E7
%
A2
%
97
%
EF
%
BC
%
8C
%
E4
%
BB
%
A5
%
E5
%
8F
%
8A
%
E5
%
85
%
B6
%
E4
%
BB
%
96
%
E5
%
B7
%
A5
%
E5
%
BA
%
8F
%
E2
%
80
%
A6
%
E2
%
80
%
A6
%
0A26
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20cleaner
.
clean
();%
0A27
%
20
%
20
%
20
%
20
%
20
%
20
%
20
%
20cleaner
.
wash
();%
0A28
%
20
%
20
%
20
%
20
%
7D
%
0A29
%
7D
%
0A
这下可爽了,我们再也不用去花费时间去调动那么多资源,又是出门买菜,又是找女友做菜,洗碗擦桌什么的。所以我们急需一个门面来解决这些问题,如果没有门面的话,试想每家每户每顿都做饭的话,于是我们放弃我们的专业优势,整天花很长时间做饭才能不饿肚子,如此劳动分工不明确,社会生产率低下,国家经济生产不景气,最后造成
GDP
下滑,这就是亚当斯密的劳动分工理论。
其实这就是门面模式的用法了,门面就是一个大系统,里面封装了很多的子部件(或子系统),部件之间也许有复杂的逻辑关系,对于我们旁观者来说,直接使用这些子部件是非常麻烦的一件事情,所以门面就充当了一个包装类的角色,并且对外暴露一个接口,达到简化客户操作的目的,同时也是对客户端与子系统之间的解耦。
看完本文有收获?请转发分享给更多人
以上数据来源于网络,如有侵权,请联系删除。
上一篇:
一口气说出 Synchronized 同步方法的八种使用场景
下一篇:
出现几率比较大的Redis面试题(含答案)
评论
(0)
提交
类别
基础编程学习
HTML
PHP
Python
编程知识库
后端开发知识
热门文章
Java并发中的同步容器与并发容器,你了解多少?
Innodb中的事务隔离级别和锁的关系,难倒一半面试者!
SpringBoot + minio实现分片上传、秒传、续传
面试官:你知道消息队列如何保证数据不丢失吗?
JAVA知识 Java8新特性
面试官:谈谈为什么要限流,有哪些限流方案?
说说动态代理与静态代理区别
面试官:思考Tomcat 类加载器为什么要违背双亲委派模型?
boot-admin 基于SpringBoot的后台权限管理系统,可作为脚手架,用于快速搭建项目
SpringBoot+Vue+App+硬件实现智能家居系统项目