门面模式

    门面模式是一个非常常用且实用的模式。在实现的系统中,通常有多个子系统或功能模块。客户端如果直接的与这些子系统打交道,将会是耦合关系和客户端代码变得很复杂。通过在子系统前加入一个门面,对外提供一个统一的入口,将会解决这个问题。

外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

门面模式_第1张图片
    如图,使用模式后,客户端只与门面进行交互,多外逻辑变得简单了许多。门面模式在类、模块、系统甚至更大的级别上都可以使用,而且灵活多变,所以并没有较为统一的实现方法。
    如果直接引入一个门面类,会有一个缺陷:当后面的子系统发生变化时,门面类就要相应变化,客户端也有很大可能需要变化。不符合开闭原则。可以通过引入抽象门面解决,客户端针对抽象编程,适应变化。门面也可以通过具体实现来适应一部分的扩展。
    
    总结:
        优点:
  • 降低客户端和子系统的耦合度,使用变得容易,客户端变得简单。
        缺点:
  • 设计不当可能子系统变化就需要需改门面类,违反开闭原则。
        适用场景:
  • 为复杂的子系统提供统一简单的访问。
  • 将客户端与系统解耦。
  • 在层次化结构中,为每层建造门面,层级之间通过门面交互,降低层级之间的耦合度。

你可能感兴趣的:(设计模式)