调停者和门面设计模式

今天我们来聊两个设计模式:调停者设计模式和门面设计模式,为什么要将他们放在一起讲解,因为他们两个东东太像了,仅仅是由于作用的地方不同而产生的不同的叫法。

我们用一个对于我们90后最难的一个问题来入手吧。假设我们厌倦了城市生活,想要找一个安静的地方安家,养猪,顺便写一个猪脸识别来分类管理这些猪(梦想中的生活)。而在做这些事情的前提,我们必须建造一个房子和一个猪圈。

我们来看一下我们以前会怎么做。

盖房子需要工人,砖头,水泥等等,我们需要一个一个联系所需要的人。但我这么聪明当然不会这么干了,所以我找了一个人来帮我完成这些事情,于是就成为了这样的流程。

我找了一个包工头,代理商帮我去完成这些事情。这个流程就是一个完整的门面模式。是不是感觉和代理模式有点像,帮我做事情。其实吧设计模式到最后就殊途同归了,正所谓,太极剑法,学多少忘多少,最后记得的只是太极剑。

我们回到编程领域,我们来看一下门面模式具体的类图实现

那接下来我们来看一下调停者设计模式。

它和门面模式最大的区别就是门面模式是挡在外层的,而它是在所有服务中间的。我们来看一下它的原理图。

我们再来看一下它的类图实现

发现了没,两个模式的类图实现几乎相同,所以他们的代码实现也几乎相同。

了解了他们的原理以后,我们来聊聊他们在实际代码中的应用。

**门面模式:**服务器部署时的网关,将所有的请求拦截,具体的方法转发由网关决定

**调停者模式:**协调中间件,微服务中将所有的服务注册到类似于zookeeper的协调中间件中,通过中间件访问其他服务;消息中间件,需要什么消息通过消息中间件进行获取。

对于一些比较老的项目,门面模式和调停者模式的调度中心很有可能是一个,如通过Nginx管理服务。

我们来看一下具体的代码实现吧。

门面模式代码实现(角色组成)

  • 子系统
class Cement{void cement(){System.out.println("水泥");}
}class Worker{void worker(){System.out.println("工人");}
}class Brick{void brick(){System.out.println("砖头");}
}
  • 门面
class Contractor{private Cement cement = new Cement();private Worker worker = new Worker();private Brick brick = new Brick();void cement(){cement.cement();}void worker(){worker.worker();}void brick(){brick.brick();}
}

调停者模式的代码实现和门面模式几乎相同。两者只是因为应对与不同的位置而诞生,本质相同。

更多原创文章请关注公众号@MakerStack

抽丝剥茧——调停者和门面设计模式相关推荐

  1. Java中的门面设计模式,非常有用!

    门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门 ...

  2. 门面设计模式(Facade Pattern)

    GOF设计模式 Facade Pattern 门面设计模式 门面模式例子:我有一个专业的Nikon相机,我就喜欢自己手动调光圈.快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会.幸好相机 ...

  3. Python门面设计模式

    理解结构设计模式 1.结构型模式描述如何将对象和类组合成更大的结构 2.结构型模式是一种能够简化设计工作的模式,因为它能够找出更简单的方法来认识或表示实体之间的关系.在面向对象世界中,实体指的是对象或 ...

  4. 门面设计模式(facade)

    门面设计模式(facade) 这个贼鸡儿简单,快看两眼,这是我介绍的最后两个设计模式了!坚持,成功一定是属于你的! 这个设计模式叫个啥?门面设计模式??这又是什么玩意(消音ing),好了好了我举个例子 ...

  5. 11【门面设计模式】

    文章目录 十一.门面设计模式 11.1 门面设计模式简介 11.1.1 门面设计模式概述 11.1.2 门面设计模式中的角色 11.2 门面设计模式的实现 11.3 门面设计模式的优缺点 十一.门面设 ...

  6. Java中的门面设计模式

    门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门 ...

  7. 20201102 门面设计模式

    门面设计模式: response中getWriter方法就是封装了outputStream 三个角色:子系统角色,门面角色,客户端角色.持有对方的实例. 门面设计模式相当于聚合层,就像云鹊的api-w ...

  8. 软件设计模式-门面设计模式

    门面设计模式 门面模型(facade pattern)又称外观模型,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,简而言之就是把一堆复 ...

  9. 20191219 门面设计模式

    门面设计模式 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式. 使用哪种设计模式属于详细设计. 门面模式就是动里不动外,让外层好调用.使用门面设计模式. 门面设计 ...

最新文章

  1. 译-在Python正则模式中search()和match()的区别是什么?
  2. BUAA_OO第三单元作业总结——JML
  3. Easyui入门视频教程 第01集---认识Easyui
  4. 江苏联合阿里云启动“1+30+300”工程 制造业大省欲打造智造模板
  5. UNIX系统编程(一)
  6. 再见了kafka2.0时代,去掉了zk的kafka3.0才是时代新王!
  7. 力扣226-翻转二叉树(C++,附思路)
  8. 单片机r6/r7c语言怎么用,关于单片机C51中c语言函数(-nop-())?
  9. mysql常用sql总结_获取多个字段最大值最小值
  10. Python指南--错误和异常
  11. python again语句_【python笔记 二 】python语句
  12. Mac 苹果OS X小技巧:如何更改文件的默认打开方式
  13. EdrawMax Ultimate v12.0 图表和流程图
  14. SVN可视化管理iF.SVNAdmin+LDAP认证
  15. 离散求边缘密度_求一把能退烧的机械键盘?——机械键盘购买“指北”
  16. win7旗舰版/专业版黑屏后怎样再次永久激活?
  17. vue run dev报错 缺少package.json文件
  18. Java知识复习清单
  19. MATLAB中关于复矩阵的操作,新手易错
  20. win10上cmd命令中文显示问号?

热门文章

  1. svn不小心ignore了怎么办
  2. java中的对象是什么_Java中的对象是什么以及如何使用它?
  3. 我用Python爬取了4000+股票数据,并用plotly绘制了树状热力图(treemap)
  4. 面向鲲鹏和昇腾的创新架构
  5. 网安渗透安服 电脑 环境 配置 一文全
  6. Linux学习笔记_5_文件目录类指令日期,时间
  7. C++取整,四舍五入
  8. 微信小程序--页面劫持
  9. 量化交易 简易回测框架
  10. webug4.0总结篇