正确使用设计模式具有以下优点

 新闻资讯     |      2021-07-20 12:31

本节是后头各章进修的基本,从整体上先容软件设计模式的观念与特点、软件设计模式的根基要素,以及 GoF 的 23 种设计模式简介。 软件设计模式的发生配景 “设计模式”这个术语最初并不是呈此刻软件设计中,千亿棋牌,而是被用于修建规模的设计中。

1977 年,美国著名修建大家、加利福尼亚大学伯克利分校情况布局中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《修建模式语言:城镇、修建、结构(A Pattern Language: Towns Building Construction)中描写了一些常见的修建设计问题,并提出了 253 种关于对城镇、邻里、住宅、花圃和房间等举办设计的根基模式。

1979 年他的另一部经典著作《修建的永恒之道》(The Timeless Way of Building)进一步强化了设计模式的思想,为厥后的修建设计指明白偏向。

1987 年,肯特·贝克(Kent Beck)和沃德·坎宁安(Ward Cunningham)首先将克里斯托夫·亚历山大的模式思想应用在 Smalltalk 中的图形用户接口的生成中,但没有引起软件界的存眷。

直到 1990 年,软件工程界才开始研讨设计模式的话题,厥后召开了多次关于设计模式的研讨会。

1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者相助出书了《设计模式:可复用面向工具软件的基本》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在本教程中收录了 23 个设计模式,这是设计模式规模里程碑的事件,导致了软件设计模式的打破。这 4 位作者在软件开拓规模里也以他们的“四人组”(Gang of Four,GoF)匿名著称。

直到本日,狭义的设计模式照旧本教程中所先容的 23 种经典设计模式。 软件设计模式的观念与意义 有关软件设计模式的界说许多,有些从模式的特点来说明,有些从模式的浸染来说明。本教程给出的界说是大大都学者公认的,从以下两个方面来说明。 1. 软件设计模式的观念 软件设计模式(Software Design Pattern),又称设计模式,是一套被重复利用、大都人知晓的、颠末度类编目标、代码设计履历的总结。它描写了在软件设计进程中的一些不绝反复产生的问题,以及该问题的办理方案。也就是说,它是办理特定问题的一系列套路,是前辈们的代码设计履历的总结,具有必然的普遍性,可以重复利用。其目标是为了提高代码的可重用性、代码的可读性和代码的靠得住性。 2. 进修设计模式的意义 设计模式的本质是面向工具设计原则的实际运用,是对类的封装性、担任性和多态性以及类的关联干系和组合干系的充实领略。正确利用设计模式具有以下利益。

可以提高措施员的思维本领、编程本领和设计本领。

使措施设计越发尺度化、代码体例越发工程化,使软件开拓效率大大提高,从而缩短软件的开拓周期。

使设计的代码可重用性高、可读性强、靠得住性高、机动性好、可维护性强。


虽然,软件设计模式只是一个引导。在详细的软件幵发中,必需按照设计的应用系统的特点和要求来得当选择。对付简朴的措施开拓,苛能写一个简朴的算法要比引入某种设计模式越发容易。但对大项目标开拓可能框架设计,用设计模式来组织代码显然更好。 软件设计模式的根基要素 软件设计模式使人们可以越发简朴利便地复用乐成的设计和体系布局,它凡是包括以下几个根基要素:模式名称、别名、念头、问题、办理方案、结果、布局、模式脚色、相助干系、实现要领、合用性、已知应用、例程、模式扩展和相关模式等,个中最要害的元素包罗以下 4 个主要部门。 1. 模式名称 每一个模式都有本身的名字,凡是用一两个词来描写,可以按照模式的问题、特点、办理方案、成果和结果来定名。模式名称(PatternName)有助于我们领略和影象该模式,也利便我们来接头本身的设计。 2. 问题 问题(Problem)描写了该模式的应用情况,即何时利用该模式。它表明白设计问题和问题存在的前因效果,以及必需满意的一系列先决条件。 3. 办理方案 模式问题的办理方案(Solution)包罗设计的构成身分、它们之间的彼此干系及各自的职责和协作方法。因为模式就像一个模板,可应用于多种差异场所,所以办理方案并不描写一个特定而详细的设计或实现,而是提供设计问题的抽象描写和奈何用一个具有一般意义的元素组合(类或工具的 组合)来办理这个问题。 4. 结果 描写了模式的应用结果以及利用该模式应该衡量的问题,即模式的优缺点。主要是对时间和空间的权衡,以及该模式对系统的机动性、扩充性、可移植性的影响,也思量其实现问题。显式地列出这些结果(Consequence)对领略和评价这些模式有很大的辅佐。