【问题标题】:Facade Design Pattern: Transforming client request外观设计模式:转换客户请求
【发布时间】:2015-09-09 08:15:52
【问题描述】:

考虑以下设计,我怀疑我是否以正确的方式实现了Facade 设计模式。我担心的是我操纵了来自客户端的简单请求;而不是天真地将请求委托给封装类型:ComplexWorker。可以吗?不就是Wrapper设计模式吗?

class WorkFacade
{
   public void Work(SimpleRequest simpleRequest)
   {
       ComplexRequest = new ComplexRequest(simpleRequest);
       ComplexRequest.RequestTime = DateTime.Now;
       ComplexRequest.UserId = 120;
       new ComplexWorker().Work(ComplexRequest, 2015, 6, 7, 23, 12, 1);
    }
}

class ComplexRequest
{
    ComplexRequest(SimpleRequest request)
    {
          // Code to convert simple request to complex request
          // understandable by ComplexRequest
    }
}

class ComplexWorker
{
   void Work(ComplexRequest request)
   {
      //...
   }
}

【问题讨论】:

    标签: design-patterns architecture facade


    【解决方案1】:

    是的,您已经实现了外观模式。

    无论谁使用您的 Façade,都可以享受不必熟悉子系统(在您的示例中为 ComplexRequest 和 ComplexWorker)带来的好处。这意味着您已经为客户端提供了一个高级且统一的界面。这就是 Façade 的全部意义所在。这样做是在利用信息隐藏原则。

    Wrapper 模式,或者更广为人知的 - Adapter pattern,解决了另一个问题。它可以帮助您使不兼容的接口协同工作。它通常有助于使旧组件的阻抗匹配适应新系统。

    【讨论】:

    • Information Hiding;这就是我一直在寻找的。​​span>
    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多