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表示一种场景,其中使用协调实体隐藏一组内部实体/行为以执行操作
- 工厂表示工厂实体为您生产/制造对象的场景
- 桥接表示如何连接两个相似但不同(断开连接)的实体的场景
- 适配器表示如何连接两个不同实体的场景