1、简介
外观模式通过提供一个可以访问所有接口的一个接口,从而达到隐藏系统复杂性的目的
2、简单的示意图
3、涉及的角色
3.1、门面角色:这个角色知晓所有相关的子系统的功能和责任
3.2、子系统角色:如上图的模块A、B、C 子系统可以被客户端直接调用,也可以被门面角色调用。子系统不知道门面的存在
3.3、客户端
UML示例图
4、源代码
4.1、子系统A
package Facade; /** * ******************************************************** * @ClassName: ModuleA * @Description: 子系统A * ********************************************************** */ public class ModuleA { //示意方法 public void testA(){ System.out.println("调用ModuleA中的testA方法"); } }
4.2、子系统B
package Facade; /** * ******************************************************** * @ClassName: ModuleB * @Description: 子系统B * ********************************************************** */ public class ModuleB { //示意方法 public void testB(){ System.out.println("调用ModuleB中的testB方法"); } }
4.3、子系统C
package Facade; /** * ******************************************************** * @ClassName: ModuleC * @Description: 子系统C * ********************************************************** */ public class ModuleC { //示意方法 public void testC(){ System.out.println("调用ModuleC中的testC方法"); } }
4.4、门面角色
package Facade; /** * ******************************************************** * @ClassName: Facade * @Description: 门面角色 * ********************************************************** */ public class Facade {
private ModuleA moduleA;
private ModuleB moduleB;
private ModuleC moduleC; public void Facade(){ moduleA = new ModuleA(); moduleB = new ModuleB(); moduleC = new ModuleC(); }
public void testA(){
moduleA.testA();
}
public void testB(){
moduleB.testB();
}
pulic void testC(){
moduleC.testC();
} }
4.5、测试客户端
package Facade; /** * ******************************************************** * @ClassName: Client * @Description: 门面模式测试客户端 * ********************************************************** */ public class Client { public static void main(String[] args) { Facade facade = new Facade(); facade.testA();
facade.testB();
facade.testC();
} }