当前位置:首页>编程知识库>后端开发知识>设计模式是什么鬼(门面)
设计模式是什么鬼(门面)
阅读 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下滑,这就是亚当斯密的劳动分工理论。
其实这就是门面模式的用法了,门面就是一个大系统,里面封装了很多的子部件(或子系统),部件之间也许有复杂的逻辑关系,对于我们旁观者来说,直接使用这些子部件是非常麻烦的一件事情,所以门面就充当了一个包装类的角色,并且对外暴露一个接口,达到简化客户操作的目的,同时也是对客户端与子系统之间的解耦。
看完本文有收获?请转发分享给更多人
以上数据来源于网络,如有侵权,请联系删除。
评论 (0)