软件设计模式是什么

2023-07-31 09:08:00 生活常识 投稿:月熙儿

软件设计模式又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

软件设计模式是什么

简介

设计模式(英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在 1990 年代由 Erich Gamma 等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。

随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且 Ward Cunningham 为此发明了 WikiWiki 用来交流设计模式的经验。

历史

肯特·贝克和沃德·坎宁安在 1987 年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在 Smalltalk 中的图形用户接口的生成中。一年后 Erich Gamma 在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时 James Coplien 在 1989 年至 1991 年也在利用相同的思想致力于 C++的开发,而后于 1991 年发表了他的著作 Advanced C++ Idioms。就在这一年 Erich Gamma 得到了博士学位,然后去了美国,在那与 Richard Helm, Ralph Johnson ,John Vlissides 合作出版了 Design Patterns – Elements of Reusable Object-Oriented Software 一书,在此书中共收录了 23 个设计模式。这四位作者在软件开发领域里也以他们的匿名著称 Gang of Four(四人帮,简称 GoF),并且是他们在此书中的协作导致了软件设计模式的突破。有时这个匿名 GoF 也会用于指代前面提到的那本书。

模式格式

尽管名称和顺序在不同的资料中各有不同,描述模式的格式大致分为以下四个主要部分:

模式名称(Pattern Name):每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。

问题(Problem):在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。

解决方案(Solution):上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式。

效果(Consequence):采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。

别名(Also Known As):一个模式可以有超过一个以上的名称。这些名称应该要在这一节注明。

动机(Motivation):该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。

应用(Applicability)

结构(Structure):这部分常用类图与互动图阐述此模式。

参与者(Participants):这部分提供一份本模式用到的类与物件清单,与它们在设计下扮演的角色。

合作(Collaboration):描述在此模式下,类与物件间的互动。

结果(Consequences):这部分应描述使用本模式後的结果、副作用、与交换(trade-off)

实现(Implementaion):这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。

例程(Sample Code):示范程式。

已知应用(Known Uses):业界已知的实做范例。

相关模式(Related Patterns):这部分包括其他相关模式,以及与其他类似模式的不同。

相近术语

对某个问题经常出现的、在设计中应该尽量避免的、坏的设计方案被称为反模式。

模式列表

基础模式

委托模式

接口模式

代理模式

标签: # 模式 # 软件
声明:犀牛文库所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系admin@qq.com