"门面"设计模式vs" Facade"来自建筑

时间:2016-08-18 17:43:59

标签: design-patterns architecture facade

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

3 个答案:

答案 0 :(得分:1)

总的来说,是的。 “四人帮”模式的工作受到Christopher Alexander的启发。

  

克里斯托弗亚历山大是建筑师,他首先研究建筑和社区的模式,并开发了一种模式语言"生成它们。

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

  

寻找好名字一直是发展中最困难的部分之一   我们的目录。

答案 1 :(得分:0)

Facade Pattern指的是过滤信息或墙壁大型实施/复杂细节。

它可以像一个窗帘或墙壁一样复杂的方法或架构,以便于访问。这就是Facade Pattern的呈现方式(请参阅答案here了解“外观模式是什么”)。您也可以通过Facade向您的班级隐藏一些方法或功能。

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

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

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

所以是的,几乎所有的模式在某种程度上都有现实生活。

答案 2 :(得分:0)

更一般地说,你要问的是,"设计模式名称是否用现实生活实体来描述其内部设计的想法?

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

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

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

因此,我们应该从前一点学到的另一件事是,我们不应该直接使用我们自己对模式名称所暗示的理解,因为它可能与它们的含义不同。我们应该首先研究他们的真实想法。即他们建议的编程解决方案是什么。

Ex:Bridge模式暗示了一座桥梁。但就编程而言,它可以通过decoupling the abstraction from ones implementation实现。