设计模式程序员Java设计模式

门面模式-Facade-外观模式

2017-03-15  本文已影响47人  孔祥子看天下

这个模式的名字还挺多的,如题吧!但是虽然名字多,但是它简单啊!!!

0x0 外观模式介绍
先看一个场景

场景:注册一个公司需要(简化版本)
1、去工商服务大厅核名、填写注册信息。
2、去银行开户
3、去开社保账号等

如果一个人自己去办理,很麻烦。这个时候就出现了中介来帮助我们来屏蔽这些麻烦。

中介就是facade,我们只管给中介说:我要创办一个公司,中介自己去访问各个机构去把事情办了!!!

解决问题

子系统和外界之间的调用更加明晰。降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

好处

1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。3、减少系统相互依赖,提高灵活性,提高了安全性。

使用场景

1、为复杂的模块或子系统提供外界访问的模块。 2、子系统相对独立。 3、预防低水平人员带来的风险。

0x01 实例

我们就用外观模式解决最开始引入的问题
首先定义一个解决问题的接口
<pre>
public interface DoThings {
void doThing1();
void doThing2();
}
</pre>

工商子系统
<pre>
public class GongShang implements DoThings {
@Override
public void doThing1() {
System.out.println("GongShang 核名");
}

@Override
public void doThing2() {
    System.out.println("GongShang 填写资料");
}

}
</pre>

银行子系统
<pre>
public class YinHang implements DoThings {
@Override
public void doThing1() {
System.out.println("YinHang 核实信息");
}

@Override
public void doThing2() {
    System.out.println("YinHang 开户");
}

}
</pre>
其他省略

0x2 外观接口
<pre>
public class MyFacade {

private GongShang gongShang;
private YinHang yinHang;
private Other other;

public MyFacade() {
    this.gongShang = new GongShang();
    this.yinHang = new YinHang();
    this.other = new Other();
}

public void gonshangKaihu() {
    this.gongShang.doThing1();
    this.gongShang.doThing2();
}

public void yinhangKaihu() {
    this.yinHang.doThing1();
    this.yinHang.doThing2();
}

public void doOther() {
    this.other.doThing1();
    this.other.doThing2();
}

}
</pre>

客户端调用
<pre>
public class Main {

public static void main(String[] args) {
    System.out.println("门面模式-外观模式-facade模式 !");
    MyFacade myFacade = new MyFacade();
    myFacade.gonshangKaihu();
    myFacade.yinhangKaihu();
    myFacade.doOther();
}

}

</pre>

运行效果

外观模式.png
上一篇下一篇

猜你喜欢

热点阅读