外观模式

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();
} }
原文地址:https://www.cnblogs.com/lanblogs/p/15175267.html