zoukankan      html  css  js  c++  java
  • 外观模式

    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();
    } }
  • 相关阅读:
    拓扑排序笔记
    Codeforces Round #683 (Div. 2, by Meet IT)(A->C)(构造,思维,贪心)
    Acwing 846. 树的重心(DFS枚举删除每一个点)
    Acwing 125. 耍杂技的牛(贪心)(从局部到全局)
    Acwing 802. 区间和(下标离散化+vector+二分)
    Acwing 799. 最长连续不重复子序列(双指针)
    Acwing 139. 回文子串的最大长度(前缀+后缀处理+哈希+二分)
    Linux shell 变量$#,$@,$0....的含义
    一双不锈钢筷子 的测试用例?
    OSI模型 TCP/IP模型 再整理
  • 原文地址:https://www.cnblogs.com/lanblogs/p/15175267.html
Copyright © 2011-2022 走看看