门面模式-Facade-外观模式

作者: 孔祥子看天下 | 来源:发表于2017-03-15 09:39 被阅读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

    相关文章

      网友评论

        本文标题:门面模式-Facade-外观模式

        本文链接:https://www.haomeiwen.com/subject/zozknttx.html