门面
https://mp.weixin.qq.com/s/MG-Y7GHvxCACvcCcslT-2w
开门见山,门,建筑物的入口,面,脸也。门面(Facade),通常指店铺的门头外表部分,当然一定要临街才是好的商铺,在人流量大的地方营造更好的视觉冲击,这样会有更多等等机会暴露给潜在顾客,否则只能是靠“酒香不怕巷子深”,靠味道来吸引人了。
当然除了光鲜亮丽的外表,更重要的是门店提供的服务了。就拿餐饮来举例吧,如果没有这些门店我们都怎样吃饭呢?我们自己做又不会,算了还是找女友下厨吧。很简单分三步走,首先找菜贩买菜,其次女友下厨,最后吃完洗碗,打完收工代码如下。
public class VegVendor {//菜贩子
public void sell(){
System.out.println("菜贩子卖菜。。。");
}
}
public class GirlFriend {//女友
public void cook(){
System.out.println("女友烹饪。。。");
}
}
public class Me {
public void eat(){
System.out.println("我只会吃。。。");
}
public static void main(String[] args) {
//找菜贩子买菜
VegVendor vv = new VegVendor();
vv.sell();
//找女友做饭
GirlFriend gf = new GirlFriend();
gf.cook();
//我只会吃
Me me = new Me();
me.eat();
//谁洗碗呢?一场战场一触即发……
}
}
期盼总是美好的……
可现实是残酷的……恩,不管怎样至少我们是把饭给吃完了,不吃完也不行啊。
其实我们不该找女友做饭的,而是应该雇一个专业厨师,可这下来得多大花费啊,太划不来了,也许还得我们自己洗碗……哎。其实我们也不想麻烦,还是找门店来解决吧,至于那些买菜啊,烹饪啊,洗碗收拾桌子啊我们统统都不用管了,门店可以进行资源整合与调度,这样我们吃饭就变得如此简单了,只需要付钱就行了,毕竟我们只会吃。
1public class Facade {
2
3 private VegVendor vv;
4 private Chef chef;
5 private Waiter waiter;
6 private Cleaner cleaner;
7
8 public Facade() {
9 this.vv = new VegVendor();
10 //开门前就找菜贩子准备好蔬菜
11 vv.sell();
12 //当然还得雇佣好各类饭店服务人员
13 this.chef = new Chef();
14 this.waiter = new Waiter();
15 this.cleaner = new Cleaner();
16 }
17
18 public void provideService(){
19 //接待,入座,点菜
20 waiter.order();
21 //找厨师做饭
22 chef.cook();
23 //上菜
24 waiter.serve();
25 //收拾桌子,洗碗,以及其他工序……
26 cleaner.clean();
27 cleaner.wash();
28 }
29}
这下可爽了,我们再也不用去花费时间去调动那么多资源,又是出门买菜,又是找女友做菜,洗碗擦桌什么的。所以我们急需一个门面来解决这些问题,如果没有门面的话,试想每家每户每顿都做饭的话,于是我们放弃我们的专业优势,整天花很长时间做饭才能不饿肚子,如此劳动分工不明确,社会生产率低下,国家经济生产不景气,最后造成GDP下滑,这就是亚当斯密的劳动分工理论。
其实这就是门面模式的用法了,门面就是一个大系统,里面封装了很多的子部件(或子系统),部件之间也许有复杂的逻辑关系,对于我们旁观者来说,直接使用这些子部件是非常麻烦的一件事情,所以门面就充当了一个包装类的角色,并且对外暴露一个接口,达到简化客户操作的目的,同时也是对客户端与子系统之间的解耦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)