互联网从业者的日常程序员

老王讲设计模式(七)——门面模式

2017-03-09  本文已影响371人  大树林里的小树

门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

门面模式-主图镇楼

难得的好天气,万里无云,阳光明媚,只是气温也稍微的高了一点,长时间站在太阳下,还是觉得挺热的。

街上的妹纸已经退去了冬装,换上了春装,有的妹纸已经开始穿上短裙了。老王正斜靠6楼办公室的窗边,向外打望着。

突然,门一下被推开,小蔡气呼呼的走了进来,面色绯红,香汗淋漓,仿佛刚做了剧烈运动一般。

小蔡很生气

小蔡一边走一边说:“气死我了,那些吃皇粮的单位效率太低,太低了。我们交的个人所得税拿去养他们,真是不甘心!”

老王凑上去,问:“咋的啦?美女”

关心的眼神

小蔡说:“房产交易中心那个交易流程简直太低效了。今天请了一上午的假,本以为能把事儿办完,结果一上午,排号,交费,查资料,注销资料,交税……整整折腾了一上午,累死我了。而且事还没办完,去交税窗口时,他们说一天只办50个!现在才14点,他们就不收了,我是抱着钱去交给他们,他们还不要。交费交税要分开两个窗口,查资料要跑3个窗口……”

老王在一旁默默的听完,说:“他们需要一个门面模式啊~”

小蔡好奇的问:“门面模式?这也能和设计模式挂上勾?”

老王点点头说:“对啊,其实你找个房地产经纪人,也就是俗称的中介,那就行了,那就是门面模式中的门面了。”

//房地产交易中心的X部门
public class XDepartment {

  //查这些资料
  public void getInfo1(){
    System.out.println("查资料1");
  }

  //查那些资料
  public void getInfo2(){
    System.out.println("查资料2");
  }

  //查其他资料
  public void getInfo3(){
    System.out.println("查资料3");
  }
}

老王接着说:“定义完查资料的部门后,接着定义一下交钱的部门。”

//房地产交易中心的Y部门
public class YDepartment {
  //交这样费
  public void payThis(){
    System.out.println("查资料1");
  }

  //交那样费
  public void payThat(){
    System.out.println("查资料2");
  }

  //交苛捐杂税
  public void payOther(){
    System.out.println("查资料3");
  }
}

老王喝了一口水,说:“现在我们来定义中介,也就是定义门面,中介可以帮我们去跑房产交易中心的各种流程。”

//这是一个中介,可以代办各种业务
public class Intermediary {
  private XDepartment xDepartment;
  private YDepartment yDdepartment;

  public Intermediary(){
    xDepartment = new XDepartment();
    yDdepartment = new YDepartment();
  }

  //查这些资料
  private void getInfo1(){
    xDepartment.getInfo1();
  }
    
  //查那些资料
  private void getInfo2(){
    xDepartment.getInfo2();
  }
    
  //查其他资料
  private void getInfo3(){
    xDepartment.getInfo3();
  }

  //交这样费
  private void payThis(){
    yDdepartment.payThis();
  }

  //交那样费
  private void payThat(){
    yDdepartment.payThat();
  }
    
  //交苛捐杂税
  private void payOther(){
    yDdepartment.payOther();
  }

  //工作
  public void work(){
    getInfo1();
    payThis();
    getInfo2();
    getInfo3();
    payThat();
    payOther();
  }
}

老王稍显得意的说:“接下来,我们将工作交给中介即可。”

//我们就是中介的客户
public class Client {

  public static void main(String[] args) {
    //找到一个中介,然后将工作交给他
    Intermediary intermediary = new Intermediary();
    intermediary.work();
  }
}

老王稍作停顿,接着说:“看,这下我们是不是轻松多了。我们只需要将工作交给中介即可,中介对于我们客户来说,只有一个方法,那就是工作,至于他怎么工作,以及他需要做哪些工作,我们就不用管了。同时,我们也不需要和房地产交易中心的各个窗口发生任何关系了。如果将来他们的工作流程有变,我们也不需要进行任何改变,只需要将工作交给中介,然后中介去改变他的工作流程就是了。在我们日常开发的工作中,常常会用到这个模式,比如我们的微服务,其实对于外面的调用都是不公开的,外面只需要调用我们提供的接口即可,这就是门面模式。统一出接口去访问多个子系统的多个不同的接口,使得子系统更容易使用。”

老王很得意

小蔡听完后说:“切~听上去挺好,可是要出中介费啊。那中介费你帮我出?”

老王吐了一下舌头说:“中介费的确有点贵,不过懒人总得付出点代价啊,要不,你就等着房地产交易中心改善吧,总理说了,要简政放权,让信息多跑路,让群众少跑路。你也可以等等。”

小蔡叹了一口气,说:“那得等多久啊~”

老王邪邪的笑了笑说:“那你就出中介费咯。谁让你懒呢~不过这么热的天,跑来跑去,的确不容易,你看你的衬衫,都要上演湿身的诱惑了。”

小蔡小脸一红,嗔道:“你个老王!”

老王/小蔡求打赏

更多内容,正在赶来,敬请关注“小蔡和老王的技术日常”。
PS:小蔡和老王的技术日常,已经建立QQ群,欢迎各位小伙伴通过发送简信的方式联系我们,询问QQ号。

上一篇下一篇

猜你喜欢

热点阅读