设计模式之外观模式

2017-06-13  本文已影响27人  老羊_肖恩

外观模式(Facade Pattern)也叫做门面模式,是一种比较常见的封装模式。其定义如下:
  Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. 即:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,是的子系统更易使用。
  外观模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口,不允许任何访问子系统的行为发生,其通用类图如下图所示:


Facade.jpg

通过通用类图,我们说一下外观模式的角色:

//子系统-ClassA
public class ClassA{
    public void doSomething(){
        System.out.println("ClassA doSomething A...");
    }
}
//子系统-ClassB
public class ClassB{
    public void doSomething(){
        System.out.println("ClassB doSomething B...");
    }
}
//子系统-ClassC
public class ClassC{
    public void doSomething(){
        System.out.println("ClassC doSomething C...");
    }
}

//外观类
public class Facade{
    //被委托的对象
    private ClassA classA = new ClassA();
    private ClassB classB = new ClassB();
    private ClassC classC = new ClassC();
    
    //提供对外访问接口1
    public void doAnyThing(){
        this.classC.doSomething();
        this.classB.doSomething();
        this.classA.doSomething();
    }
    //提供对外访问接口1
    public void doSomeThing(){
        this.classB.doSomething();
        this.classC.doSomething();
    }
}

//客户端
public class FacadeClient{
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.doAnyThing();
        System.out.println("--------------");
        facade.doSomeThing();
    }
}

通用代码的运行结果如下:

ClassC doSomething C...
ClassB doSomething B...
ClassA doSomething A...
--------------
ClassB doSomething B...
ClassC doSomething C...

外观模式的应用

外观模式的优点

外观模式的缺点

不符合开闭原则,当外部系统有新业务需求时,需要更改Facede。

外观模式的使用场景

《注》以上内容总结自秦小波-《设计模式之禅》,仅为个人学习笔记。

上一篇 下一篇

猜你喜欢

热点阅读