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

转载于:https://www.cnblogs.com/shun-gege/p/7511181.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐