跳到主要内容

外观模式

外观模式为复杂子系统提供了一个简单的接口,使得客户端可以更容易地使用该子系统。简单地来说,就是将一系列不必为外界访问的行为封装到一个包装类中,使得客户端只需要与这个包装类交互。

结构

外观模式示意图外观模式示意图

外观模式中,客户端通过外观类来访问子系统。外观类为客户端提供了复杂子系统的简单接口,客户端通过这个接口来访问子系统,从而隔离了客户端本身对子系统及其依赖的依赖。

应用场景

  • 当某些依赖仅在特定功能中使用时
  • 当客户端仅需要与子系统的一部分交互时

优缺点

优点

  • 可以让自己的代码独立于复杂子系统。

缺点

  • 保持复杂子系统高内聚具有难度
    • 在某些情况下可能会导致外观类变得庞大,成为低内聚的、包含多个不相关行为的“上帝类”

代码示例

下面的代码示例展示了一个使用外观模式的 Python 示例。ConversionFacade 类为复杂的视频处理子系统(包括 VideoConverterAudioExtractorSubtitleManager)提供了一个简单的接口。客户端代码只需要调用 ConversionFacadeprocess_video 方法,而无需了解底层各个组件的复杂交互,从而实现了客户端与复杂子系统的解耦。