理解门面模式

2019-08-22  本文已影响0人  饿了爸

1 门面设计模式介绍

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。最核心的目的:简化子系统,简化客户使用,屏蔽多个子系统

门面模式 类图

1.1 应用场景

A:简化子系统复杂性时。
B:监控所有子系统时;通过门面控制了入口,可以统一监控;
C:希望封装和隐藏子系统时;
D:两历史系统进行改造并打通关系时;

1.2 优缺点

优点:

缺点:

2 代码实现

子系统角色中的类:

public class ModuleA {
    //示意方法
    public void testA(){
        System.out.println("调用ModuleA中的testA方法");
    }
}
public class ModuleB {
    //示意方法
    public void testB(){
        System.out.println("调用ModuleB中的testB方法");
    }
}
public class ModuleC {
    //示意方法
    public void testC(){
        System.out.println("调用ModuleC中的testC方法");
    }
}

门面角色类

public class Facade {
    //示意方法,满足客户端需要的功能
    public void test(){
        ModuleA a = new ModuleA();
        a.testA();
        ModuleB b = new ModuleB();
        b.testB();
        ModuleC c = new ModuleC();
        c.testC();
    }
}
public class ModuleFacade {
    
    ModuleA a = new ModuleA();
    ModuleB b = new ModuleB();
    ModuleC c = new ModuleC();
    /**
     * 下面这些是A、B、C模块对子系统外部提供的方法
     */
    public void testA(){
        a.testA();
    }
    public void testB(){
        b.testB();
    }
    public void testC(){
        c.testC();
    }
}

客户端角色类

public class Client {
 
    public static void main(String[] args) {
        
        Facade facade = new Facade();
        facade.test();
        ModuleFacade mfacade = new ModuleFacade ()
        mfacade.testA();
    }
 
}

3 开源框架中的应用

3.1 Netty bootstrap

3.2 activiti ProcessEngine

3.3 log4j

4 其他注意事项

4.1 与代理模式区别

相似点:

区别

上一篇 下一篇

猜你喜欢

热点阅读