火影推荐程序连载62-抽丝剥茧——门面和调停者设计模式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 子系统
ptional<Integer> max www.jintianxuesha.com= list.stream(www.huiyinpp3zc.cn).max((a, b) -> a - b);
  
  System.out.println(max.get(www.haoranjupt.com)); www.fudayulpt.cn// 6
  
  //求集合的最小值
  
  System.out.println(list.stream( www.jubooyule.com ).min((www.baihua178.cn b) -> a-b).get()); // 1
  
  System.out.println(www.jucaiyle.cn list.stream(www.tengyueylzc.cn).count(www.baihuayllpt.cn));//
  
  String str =www.qitianylezc.cn"11,22,33,44,55";
  
  System.out.println(Stream.of(str.split(www.longtenghai2.com",")).mapToInt(www.wujiu5zhuce.cn-> Integer.valueOf(x)).sum());
  
  System.out.println(Stream.of(str.split("www.lanboylgw.com,")).mapToInt(Integer::valueOf).sum());
  
  System.out.println(Stream.of(str.split(www.shentuylzc.cn",")).map(x -> Integer.valueOf(x)).mapToInt(x -> x).sum());
  
  System.out.println(Stream.of(str.split(www.xingyunylpt.com",")).map(Integer::valueOf).mapToInt(x -> x).su
  • 门面
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值