看了许多博客,资料。
我个人总结的门面模式就是:给你我想给你看的,我还不是亲自给你看,我比较高大上,我有一个秘书,我想给你看的,你可以直接找我的秘书去获取。
说的可能比较接地气,就像小年轻去酒店开房,你要订房,那房卡,订早餐,这些你要是自己直接去去找到酒店的终端去自己办理,就会显得特别繁琐,还会影响美好的心情。那么,酒店就给你弄了个前台,前台就是酒店给客户一个门面。你可以直接,向前台要你想要办的一切。至于酒店后台怎么操作的,那就对客户透明了。客户也没有必要去关心酒店后台处理的所有细节。
酒店也就是高大上的,前台就是那酒店的门面。这就是我理解的门面模式。
直接上一个比较简单的实例:
首先造一个酒店的后台细节:
具体操作类一
public class ModuleA { public void test(){ System.out.println("调用模块A"); } public void haha(){ System.out.println("对客户端透明方法,子系统内部互调使用"); } public void xixi(){ System.out.println("对客户端透明方法,子系统内部互调使用"); } } 具体操作类二 public class ModuleB { public void test() { System.out.println("调用模块B"); } public void haha() { System.out.println("对客户端透明方法,子系统内部互调使用"); } public void xixi() { System.out.println("对客户端透明方法,子系统内部互调使用"); } } 具体操作类三 public class ModuleC { public void test() { System.out.println("调用模块C"); } public void haha() { System.out.println("对客户端透明方法,子系统内部互调使用"); } public void xixi() { System.out.println("对客户端透明方法,子系统内部互调使用"); } } 再来一个前台MM,门面角色 public class Facde { private static Facde facde = null; private ModuleA a = new ModuleA(); private ModuleB b = new ModuleB(); private ModuleC c = new ModuleC(); private Facde() { } //单例模式,懒汉式 比较好的解决安全问题 public static Facde getInstance() { if (facde == null) { synchronized (Facde.class) { if (facde == null) { facde = new Facde(); } } } return facde; } public void testA() { a.test(); } public void testB() { b.test(); } public void testC() { c.test(); } } 客户端 public static void main(String[] args) { Facde facde = Facde.getInstance(); facde.testA(); facde.testB(); facde.testC(); }
这就是我自己理解的门面模式,共勉之。
好处比较多,可以自己在网上找点资料看看,也就是那么几句话。