老王讲设计模式(七)——门面模式
门面模式-主图镇楼门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
难得的好天气,万里无云,阳光明媚,只是气温也稍微的高了一点,长时间站在太阳下,还是觉得挺热的。
街上的妹纸已经退去了冬装,换上了春装,有的妹纸已经开始穿上短裙了。老王正斜靠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号。