bacor

个人站

Coding is important, so is writing


门面模式

门面模式在软件实现中比较少听到,但它封装的思想在很多实现中都能找到。

定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更易于使用

通用类图如下:

这个类图的意思是,Facade门面类把子系统的操作、通信都包了,提供一层封装。也即下图所示

类图中包含2个角色:
Facade门面角色知道子系统的功能,外界可以并且只能通过这个类操作子系统。这个类中没有业务逻辑,起委托作用。
subsystem子系统可以有一个或多个子系统,包含实际业务逻辑。

优点

  1. 减少系统相互依赖
  2. 提高灵活性
  3. 提高安全性

缺点

  • 不符合开闭原则。投入生产后一旦要修改需要谨慎

使用场景

  • 为一个复杂模块或子系统提供外界访问的接口
  • 子系统相对独立——只需对子系统访问提供黑箱操作
  • 预防低水平人员带来的风险扩散

注意事项

  • 一个系统可以有多个门面
  • 门面不参与子系统内的业务逻辑

参考:

设计模式之禅