外观模式

2018-09-18  本文已影响0人  笨笨翔

1. 模式定义

外观模式(Facade Pattern):外部于一个子系统的通信必须通过一个同一的外观对象行为,为子系统中的一组接口提供一个一致的界面,外观模式定义来一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。

2. 模式结构

外观模式包含如下角色:

3. 时序图

[图片上传失败...(image-b5eef8-1537254578958)]

4. 代码分析

/**
 * 子系统A
 */
public class ModuleA {
    public void testA(){
        System.out.println("子系统A:业务A");
    }
}
/**
 * 子系统B
 */
public class ModuleB {
    public void testB(){
        System.out.println("子系统B:业务B");
    }
}
/**
 * 子系统C
 */
public class ModuleC {
    public void testC(){
        System.out.println("子系统C:业务C");
    }
}
public enum  Facde {
    INSTANCE;
    private ModuleA a;
    private ModuleB b;
    private ModuleC c;

    private Facde(){
        a = new ModuleA();
        b = new ModuleB();
        c = new ModuleC();
    }

    public void test(){
        a.testA();
        b.testB();
        c.testC();
    }

}
public class MainClass {
    public static void main(String[] args) {
        Facde.INSTANCE.test();
    }
}

这里用了单例模式,关于单例模式的文章马上就写到来。
运行结果:


image.png

5. 模式分析

根据“单一职责原则”,在软件中将一个系统划分为若干个子系统有利于降低整个系统的负责性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统的访问提供来一个简单而单一的入口。外观模式也是“迪米特法则”的体现,通过引入一个新的外观类可以降低原有系统的复杂性,同时降低客户类与子系统类的耦合度。外观模式要求一个子系统的外部与其内部的通信通过一个同一的外观对象进行,外观类将客户端与子系统的内部负责性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很对对象打交道。外观模式的目的在于降低系统的负责程度。外观模式从很大程度上提高类客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。

6. 优点

外观模式的优点

7. 缺点

8. 适用环境

参考:java_my_life的外观模式

上一篇 下一篇

猜你喜欢

热点阅读