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();
    } }
  • 相关阅读:
    nacos 管理页面使用
    Spring Cloud Alibaba 添加 nacos 注册服务
    Maven安装与配置
    [ERROR] 不再支持源选项 5。请使用 7 或更高版本
    SpringCloudAlibaba 环境搭建
    SpringCloud、SpringCloudAlibaba、SpringBoot之间的版本依赖
    Cannot download 'https://start.spring.io': connect timed out , response: 200
    创建SpringBoot分布式项目
    [PYTHON][BAT][SHELL] 常见易忘 python、bat、shell 脚本操作汇总(持续更新)
    跳转网址
  • 原文地址:https://www.cnblogs.com/lanblogs/p/15175267.html
Copyright © 2011-2022 走看看