Categories: 建筑信息

设计纹理

设计纹理(Design pattern)是设计问题解决方案的可重用形式。 这个想法是由建筑师克里斯托弗亚历山大介绍的,并且已经被改编为其他各种学科,其中最着名的是计算机科学。

软件设计模式
软件设计模式是为解决软件设计中经常遇到的类似问题而开发的一般解决方案的建议。 虽然软件设计模式通常是独立于编程语言而定义的,但是适用于面向对象编程语言的软件设计模式是更常见的。 这些模式显示对象和类之间的关系和交互。 程序员可以通过查看他手中的问题来定制设计模式。

细节
与特定领域相关的有组织的设计模式集合被称为模式语言。 这种语言为讨论设计师面临的情况提供了一个通用的术语。

这种语言的元素是被称为模式的实体。 每个模式都描述了一个在我们的环境中反复出现的问题,然后描述解决方案的核心问题,以便您可以使用此解决方案一百万次以上,而无需以同样的方式执行两次。 – 克里斯托弗亚历山大

记录模式需要解释为什么特定的情况会导致问题,以及模式的组成部分如何相互关联以提供解决方案。 克里斯托弗亚历山大将常见的设计问题描述为由“冲突的力量”引起的问题 – 例如希望房间阳光明媚,并希望夏天下午不要过热的冲突。 一个图案不会告诉设计师有多少窗户放在房间里; 相反,它会提出一套价值观来指导设计师去做一个最适合他们特定应用的决定。 例如,亚历山大指出,应该包括足够的窗户来将光照射到整个房间。 他认为这是一个很好的解决方案,因为他认为这增加了居住者对房间的享受。 其他作者可能会得出不同的结论,如果他们对采暖成本或材料成本给予更高的价值。 这些模式的作者使用这些值来确定哪个解决方案是“最好的”,这些值也必须记录在模式中。

模式文档还应解释何时适用。 由于两栋住宅可能彼此不同,因此住宅的设计模式必须足够宽泛以应用于两者,但不能太模糊以至于无法帮助设计师做出决定。 可以使用模式的情况的范围称为其上下文。 一些例子可能是“所有房屋”,“所有两层楼房屋”或“人们花时间在的所有地方”。

例如,在克里斯托弗亚历山大的工作中,手术中心的公共汽车站和候诊室都在“等待等待”模式的范围内。

设计模式类
四联刚刚的设计模式书(国际标准图书编号0-201-63361-2)区分了三种设计模式,但没有明确的标准将它们彼此分开。

创作模式
创建模式提供了关于如何创建软件对象(或换句话说,类实例)的建议。 这个想法是,一个好的软件必须独立于它所包含的对象的创建方式来设计。 换句话说,创建对象的位置和方式不会影响其所属软件的操作; 不应添加新功能和更改的问题。

随着软件系统的发展,对象组合比类继承更加重要。 其原因是基于定义软件系统的简单基本行为模式的设计比基于固定行为的设计更灵活。 换句话说,将行为作为组合添加到对象允许根据软件的开发修改以后的行为。 在这种情况下,基于开发软件基本行为要求的设计可以在不修改对象接口的情况下使用不同或更复杂的行为。

但是,通过客观组合来抽取提供基本行为的对象或通过继承或改变行为从派生类创建对象更为困难。 创建模式包括可用于克服这些困难的软件模式。

创建模式存储在软件系统中,在对象实例中使用具体的类以及如何创建和组装这些实例。

工厂方法
通过继承对象在用于创建对象的单个接口下创建对象的方式,它将接口中的对象创建函数留给子类。

示例(原型图案)
从复杂和/或昂贵的类创建对象时,它们允许通过从现有类抽取新对象,而不是从头开始创建对象。 通过这种方式,可以轻松创建新对象,并且不会不必要地占用资源。

抽象的工厂模式
单个接口可以在不同平台上创建对象系列。 这个编号的软件应用程序可以移动到不同的平台,而不会有任何行为改变。 抽象工厂模式保持在单个接口下使用哪些具体类。

建造者模式
它允许通过单个界面根据需要创建一组复杂的对象。 当用户使用对象组时,对象组按照需要的方向构建。 未使用的零件不必要地创建,不会花费资源。

单身模式
在一个类中,只创建一个对象来创建。 这个对象可以从应用程序的任何地方访问。 该对象可能在第一次使用前不能创建。

结构模式
它提供了一些建议,通过结合结构模式类和对象来构建更广泛的软件结构。 类结构模式和对象结构模式分为两类。

类结构模式通过使用类继承或复合应用程序来扩展构造。 对象结构模式显示如何组合对象以获得新功能。

复合图案
它允许将对象与树结构以整体关系组合在一起,并且可以从单个界面访问此化合物。 通过添加和删除新对象,复合结构可以随时间扩展和收缩。

Related Post

门面(门面样式)
它允许一个复杂的结构在一个界面中一起使用。

装饰者模式
它允许一个对象添加新的职责而不用改变对象。 它使得可以在没有细分的情况下改进对象的功能。

桥梁模式
它允许接口和具体实现相互分离。 更改界面不会影响界面。 两者都可以独立开发。

享元模式
它不是创建大量类似的对象,而是通过从示例对象创建可视对象来创建拥挤的对象结构。 可视对象的状态变量由用户存储,而不是由对象本身存储。

适配器模式
它用于调整来自不同来源的对象或类的接口。

代理模式
可以模拟界面使用复杂,昂贵且难以构建的对象。 它允许使用对象的物理对象的方向对用户隐藏。

行为模式
行为模式提供了如何在对象之间分配功能责任以及如何客观地使用软件所需的解决方法的建议。 行为模式还提供对象和类模式,以及与对象之间的通信有关的模式。 行为模式允许设计者专注于对象之间的沟通和交流方法。

行为模式也分为两类,就像它们在结构模式中一样:类行为模式和对象行为模式。

类行为模式使行为能够在使用继承的类中分布。 对象行为模式使得通过一个对象组实现行为成为可能,而对象组合通过对象组合不能轻易实现。

调解员模式
相互连接的物体可以从同一个屋檐下的单点(也就是取景器)引导。 连接到搜索查找器的对象将状态更改传达给搜索查找器。 查找器查找与应用程序所需的编辑和排序相关的对象的请求。 顶级用户对象只连接到取景器。

状态模式
它允许对象根据其情况改变其行为。 从用户的角度来看,它给人的印象是你正在修改对象类。 它允许按照应用程序所需的方向添加和删除新行为。 用户对象不受此类更改的影响。

观察者模式
它允许一组对象,观察者被自动通知观察对象的变化。 观察对象继续独立于正在跟踪的人员发挥作用。 新观察员有可能参与或及时离开。 通过这种方式,应用程序可以随时间改变行为。

模板方法模式
它允许将过程用作解决方案模板。 它使得模具上的一些处理步骤可以由子类来处理。 因此,可以在不改变主图案的情况下改变一些中间步骤。 用户不知道这些更改。

命令模式
它可以将用户(客观)请求转换为对象并进行处理。 这样,不同用户的愿望就可以转化为客观记录并保存在队列或记录中。 也可以撤销在此保管库上进行的交易。

责任链(责任链模式)
用户(目标)允许通过多个对象来评估请求。 用户通过单个接口发送请求。 请求由连接到请求的对象依次处理。 请求从链上的一个对象转移到另一个对象,直到它被欢迎。 随着时间的推移,可以在链中添加或删除新对象。 用户不受此类更改的界面影响。

解释器模式
为满足复杂应用需求而定义的伪语言是一个解释器模板。 伪语言允许通过将语法规则定义为类来轻松应用语法规则。 由于语法规则被定义为类,因此可以轻松修改和改进它们。

亚迪格尔(纪念图案)
Yadigar用于隐藏在应用软件中扮演重要角色的对象的状态,并在必要时提醒或提醒他们。

迭代器模式
它确保可以依次到达位于海量对象(Aggragate对象)下的对象,而不管对象如何表示或实现。 以这种方式表示的对象可以通过单个接口访问。

策略(战略谜团)
在相同的界面下,可以解决相同问题的许多解决方法隐藏了类,使得可以在不知道使用哪种方法的情况下满足用户对象的请求。 当用户声称他们正在使用同一种对象时,他们会面临不同形式的行为。

访客模式
它允许在复合结构上添加新操作。 访问者访问复合结构中的单个对象,收集必要的信息,处理它并将其呈现给用户。

Share