Design patterns &引用;正面;设计模式vs";正面;来自建筑

Design patterns &引用;正面;设计模式vs";正面;来自建筑,design-patterns,architecture,facade,Design Patterns,Architecture,Facade,Facade设计模式是否继承了建筑的Facade概念?我的意思是在建筑学中,Facade一词通常代表任何建筑的正面或外部。Facade设计模式在软件体系结构中是否也有这种用途?如果这是真的,那么这个概念是否也适用于“工厂模式”与“工厂”,“桥接模式”与“桥接模式”,“代理模式”与“代理”以及其他设计模式?一般来说,是的。“四人帮”图案作品的灵感来自 克里斯托弗·亚历山大(Christopher Alexander)是一位建筑师,他首先研究了建筑和社区中的模式,并开发了一种生成模式的“模式语言”

Facade设计模式
是否继承了建筑的
Facade
概念?我的意思是在建筑学中,
Facade
一词通常代表任何建筑的正面或外部。
Facade设计模式
在软件体系结构中是否也有这种用途?如果这是真的,那么这个概念是否也适用于
“工厂模式”与“工厂”
“桥接模式”与“桥接模式”
“代理模式”与“代理”
以及其他设计模式?

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

克里斯托弗·亚历山大(Christopher Alexander)是一位建筑师,他首先研究了建筑和社区中的模式,并开发了一种生成模式的“模式语言”

我发现架构隐喻在很大程度上与软件设计平行。当然,没有一个隐喻是完美的,所以你肯定也会发现差异。GoF指出

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


Facade模式
指过滤信息或大型实施/复杂细节

它就像是在一些复杂的方法或建筑上放置一个窗帘或一堵墙,以便更容易接近。这就是
门面模式
的呈现方式(参见“什么是门面模式”的答案)。您还可以通过
Facade
,将某些方法或功能隐藏到类中

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

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

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

因此,是的,几乎所有的模式在某种程度上都有一个真实的应用程序。

更一般地说,你会问,“设计模式名称是否用真实实体来描述其内部设计的理念?”

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

  • Facade表示一种场景,其中使用协调实体隐藏一组内部实体/行为以执行操作
  • 工厂表示工厂实体为您生产/制造对象的场景
  • 桥接表示如何连接两个相似但不同(断开连接)的实体的场景
  • 适配器表示如何连接两个不同实体的场景
我们还应该注意到,它还取决于个人风格和个人理解。例如,GoF引入了一个解释器模式,其含义是它描述了一个典型的编程语言解释器(或编译器)但一般来说,“口译员”一词的意思类似于翻译人员,因此人们经常会误解这种模式的含义。因此,一些人认为它不是该模式的好名称,而“表达式”等名称则是更好的选择

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

例:Bridge模式意味着一个桥接器。但就编程而言,它是通过