1、简介
门面模式通过提供一个可以访问所有接口的一个接口,从而达到隐藏系统复杂性的目的
2、简单的示意图
3、涉及的角色
3.1、门面角色:这个角色知晓所有相关的子系统的功能和责任
3.2、子系统角色:如上图的模块A、B、C 子系统可以被客户端直接调用,也可以被门面角色调用。子系统不知道门面的存在
3.3、客户端
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 {
//示意方法,满足客户端需要的功能
public void test(){
ModuleA a = new ModuleA();
a.testA();
ModuleB b = new ModuleB();
b.testB();
ModuleC c = new ModuleC();
c.testC();
}
}
4.5、测试客户端
package Facade;
/**
* ********************************************************
* @ClassName: Client
* @Description: 门面模式测试客户端
*
**********************************************************
*/
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.test();
}
}
5、测试,运行如下