设计模式(十):外观模式

2019/12/25

为系统中的一组接口提供一个一致的界面

外观模式

我们的系统中,要完成一件事,可能需要横跨多个类的多个动作,那么外观模式就简化了这样的操作。

比如在一个编译其中,可能需要进行词法分析、语法分析、语义分析等等…

这些步骤都是一步接一步操作的,但对于程序员来说,没有必要知道这些细节,他只需要执行编译器的编译这个命令就足够了。

外观

对上面的编译器例子进行抽象可得,编译器就是一个外观

class Facade{
    //...
}

子系统

编译器由词法分析器、语法分析器等组成,可得外观由许多子系统组成

private SubSystemA a;
private SubSystemA b;

外观所提供的接口

public void operate(){
    a.doSomething();
    b.doSomething();
}

这样,就可以封装一些外部调用者无需知道的细节

何时使用

  • 需要为一个复杂的子系统提供一个简单接口
  • 客户与抽象类的实现部分依赖过强

效果

  • 对客户屏蔽了子系统组件
  • 降低了客户与子系统的耦合

类图

Post Directory