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

2018/08/12  |  from IT路  |  by 我是真老王  |  浏览 28

门面模式-主图镇楼

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

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

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


小蔡很生气

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

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


关心的眼神

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

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

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

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

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();

    }

}

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


老王很得意

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

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

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

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

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