外观设计模式

2019, Sep 16    

外观设计模式

外观模式(Facade Pattern,又叫门面模式)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。外观模式向现有的系统添加一个接口,来隐藏系统的复杂性。

外观模式有两个角色

门面角色

该角色没有实际的业务逻辑,此角色知晓子系统的所有功能,客户端可以调用这个角色的方法。

public class Facade {
	//被委托的对象
	private ClassA a = new ClassA();
	private ClassB b = new ClassB();
	private ClassC c = new ClassC();
    
    // 给客户端一次性调用的方法
    public void doAll() {
        methodA();
        methodB();
        methodC();
    }
    
	//提供给外部访问的方法
	private void methodA(){
		this.a.doSomethingA();
	}
	private void methodB(){
		this.b.doSomethingB();
	}
	private void methodC(){
		this.c.doSomethingC();
	}
}

子系统角色

public class ClassA {
    public void doSomethingA(){
        //业务逻辑
    }
}
public class ClassB {
    public void doSomethingB(){
        //业务逻辑
    }
}
public class ClassC {
    public void doSomethingC(){
        //业务逻辑
    }
}

测试

public class Client {
	public static void main(String[] args) {
		// 原有的客户端调用逻辑
		private ClassA a = new ClassA();
		private ClassB b = new ClassB();
		private ClassC c = new ClassC();
        a.doSomethingA();
        b.doSomethingB();
        c.doSomethingC();
        
        // 现有客户端的调用逻辑
        Facade f = new Facade();
        f.doAll();
	}
}