【问题标题】:"Facade" design pattern vs "Facade" from architecture“门面”设计模式与架构中的“门面”
【发布时间】:2016-12-25 18:05:44
【问题描述】:

Facade Design Pattern 是否从架构中继承了Facade 的概念?我的意思是在建筑中,术语Facade 通常代表任何建筑物的正面或外部。 Facade Design Pattern 在软件架构中也有这种用途吗?如果是这样,这个概念是否也适用于"Factory Pattern" vs "Factory""Bridge Pattern" vs "Bridge""Proxy Pattern" vs "Proxy" 和其他设计模式?

【问题讨论】:

    标签: design-patterns architecture facade


    【解决方案1】:

    一般来说,是的。四人帮图案作品的灵感来自Christopher Alexander

    Christopher Alexander 是建筑师,他首先研究了建筑和社区中的模式,并开发了一种“模式语言”来生成它们。

    我发现架构隐喻在很大程度上与软件设计平行。当然,没有任何比喻是完美的,因此您当然也可以找到差异。 GoF 指出,

    找到好名字一直是开发过程中最困难的部分之一 我们的目录。

    【讨论】:

      【解决方案2】:

      Facade Pattern 指过滤信息或隔离大型实现/复杂细节。

      它就像在一些复杂的方法或架构上盖上窗帘或墙一样,以便更容易访问。这就是Facade Pattern 的呈现方式(参见答案here 的“外观模式是什么”)。您还可以通过Facade 为您的类隐藏一些方法或功能。

      最好的例子之一是Repository 模式。您可以将所有数据库逻辑(DTO 到业务对象)隐藏在一些墙后面,因为有一天您可能会更改数据库(例如 SQL 到 MySql 或 Oracle,SQL 到 EntityFramework)。它隐藏了一些东西,比如一堵墙,同时显示了一些东西,比如窗户。

      对于您列表的其余部分,它非常适用。

      • Factory pattern 从特定上下文创建对象而不暴露实例化的实现(调用工厂的类不会创建,工厂会创建)
      • Bridge pattern 帮助将抽象与实现联系起来,没有依赖关系(我想保存到多个数据库,但我想要一个用于不同技术的所有实现的入口点)
      • Proxy pattern 在您现在可能不想创建的对象前面放置一个遮罩。

      是的,几乎所有模式在某种程度上都有实际应用。

      【讨论】:

        【解决方案3】:

        更一般地说,您要问的是,“设计模式名称是否根据现实生活中的实体来描述其内部设计的理念?

        从概念上讲,答案是肯定的。在你的例子中

        • Facade 表示使用协调实体隐藏一组内部实体/行为以执行操作的场景。
        • 工厂代表工厂实体为您生产/制造对象的场景。
        • 表示如何连接两个相似但不同(断开)的实体的场景。
        • 适配器表示如何连接两个不同的不同实体的场景。

        而且我们还应该注意到,这也取决于个人口味和个人理解。例如,GoF 引入了 Interpreter 模式,其含义是它描述了典型的编程语言解释器(或编译器)。但一般来说,“口译员”一词的意思类似于翻译员,因此人们经常会误解这种模式的含义。因此,有些人认为它不是该模式的好名称,而像“表达式”这样的名称会是更好的选择。

        所以我们应该从前一点中学到的另一件事是,我们不应该直接使用我们自己的理解来处理模式名称所暗示的内容,因为它们的含义可能会有所不同。我们应该先看看他们的真实想法。即他们建议的编程解决方案是什么。

        例如:桥梁模式暗示了一座桥梁。但在编程方面,它通过decoupling the abstraction from ones implementation 实现。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多