设计模式(十四)

时间:2021-10-02 22:00:24

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、测试,运行如下

设计模式(十四)