java设计模式之门面模式

java设计模式23种,因工作需要,今天学习了一下门面模式。

看了许多博客,资料。
我个人总结的门面模式就是:给你我想给你看的,我还不是亲自给你看,我比较高大上,我有一个秘书,我想给你看的,你可以直接找我的秘书去获取。

说的可能比较接地气,就像小年轻去酒店开房,你要订房,那房卡,订早餐,这些你要是自己直接去去找到酒店的终端去自己办理,就会显得特别繁琐,还会影响美好的心情。那么,酒店就给你弄了个前台,前台就是酒店给客户一个门面。你可以直接,向前台要你想要办的一切。至于酒店后台怎么操作的,那就对客户透明了。客户也没有必要去关心酒店后台处理的所有细节。
  酒店也就是高大上的,前台就是那酒店的门面。这就是我理解的门面模式。

直接上一个比较简单的实例:

首先造一个酒店的后台细节:
具体操作类一

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



这就是我自己理解的门面模式,共勉之。
好处比较多,可以自己在网上找点资料看看,也就是那么几句话。

你可能感兴趣的:(设计模式)