当前位置: 首页 > news >正文

什么是设计模式

Christopher Alexander 说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。尽管A l e x a n d e r所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两类模式的核心都在于提供了相关问题的解决方案。
一般而言,一个模式有四个基本要素:
1. 模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。
2. 问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。
3. 解决方案(solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。
4. 效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。

相关文章:

  • Matlab 双线性插值(二维)
  • TypeScript基础
  • Uniapp使用地图的时候滑动上层的view地图也滑动
  • 【DevOps】Backstage介绍及如何在Azure Kubernetes Service上进行部署
  • 附下载 | 2024 OWASP Top 10 基础设施安全风险.pdf
  • Shader中着色器的编译目标级别
  • vue3数据双向绑定解析
  • Unity3D 着色器优化(Shader Optimization)
  • 机器人基础知识
  • 如何设置GET请求的参数?
  • SAP SD学习笔记31 - 销售BOM
  • Java基础入门流程控制全解析:分支、循环与随机数实战
  • 部署MuseTalk时, MMCV问题解决方案
  • 【MyBatis Plus 逻辑删除详解】
  • DICOM开发者常用DICOM开源库详解
  • 推理大模型时代,TextIn ParseX助力出版业知识资产重构
  • 全球领先的光学方案设计公司:倚光科技
  • Android Spinner总结
  • 23、vue3+vite配置环境变量实现开发、测试、生产的区分
  • LLM最新的模型微调技术有哪些
  • 调节负面情绪可以缓解慢性疼痛
  • 国家发改委副主任谈民营经济促进法:以法治的稳定性增强发展的确定性
  • 数据中心业务今年预增50%,丹佛斯:中国是全球最重要的市场
  • A股三大股指收涨:军工股掀涨停潮,两市成交近1.5万亿元
  • 上海飞银川客机触地复飞后备降西安,亲历者:不少乘客都吐了
  • 马上评|比起奇葩论文,更可怕的是“水刊”灰产