首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是设计模式?设计模式如何提高编程效率?

什么是设计模式?设计模式如何提高编程效率?
EN

Stack Overflow用户
提问于 2010-07-04 06:32:15
回答 6查看 308关注 0票数 1

我一直在阅读各种编程风格,比如XP (先写测试),偶然发现了一本Java书,里面只有设计模式,看起来像是伪代码。

这些设计模式的用途是什么?编程上下文中的设计模式指的是什么?它的应用是什么?它是否像构建特定于域的应用程序的蓝图?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-04 07:03:57

设计模式是对常见设计问题的通用可重用解决方案。实际上,我们可以概括为:模式是对常见问题的通用可重用解决方案。不仅有设计模式,还有编码模式(虽然我们不这么叫它们,我们叫它们习惯用法),架构模式,用户体验模式,过程模式等等。

然而,这个定义有一个小问题:在编程中,我们将常见问题的通用可重用解决方案称为程序。因此,换句话说,如果你有一个反复出现的问题,你可以写一个程序,只有当你不能写程序时,你才需要一个模式。

因此,另一种定义是:模式是您无法编写的程序,因为您的编程语言太弱,无法表达它。

因此,一般来说,在尝试模式之前,您应该尝试使用更好的编程语言。然而,编程语言设计是关于权衡的:设计一种可以平等地表达所有问题的编程语言是不可能的。所以,在你的代码中有一些设计模式是非常好的,但是你不应该有太多的设计模式,而且你的核心业务逻辑中也绝对不应该有任何模式。这是一个迹象,表明您选择了错误的编程语言,任何模式都无法解决这一问题。

这里有一个例子:在汇编编程中,在程序的不同部分之间共享一段参数化的行为是一个常见的设计问题。有一种设计模式可以解决这个问题:它被称为子例程。但在一种不同的语言中,实际上在几乎所有现代语言中,子例程(有时称为过程、函数、方法、例程、子程序)都是直接构建到语言中的。它们不是一种模式,它们就在那里,甚至没有人再去考虑它们。因此,如果您的代码中只有一个或两个子例程,这是很好的。但是如果你有很多这样的东西,汇编可能不是正确的选择。

一些其他的例子:在基于原型的OO语言中,原型模式是内置的。在具有多个分派的语言中,访问者模式是内置的。在Ruby中,没有构造器,你总是不用考虑就使用Factory方法。在基于委托的OO语言中,装饰者模式是内置的。在具有高阶过程的语言中,迭代器模式是内置的。在没有可变状态的语言中,迭代器模式实际上是反模式。

票数 4
EN

Stack Overflow用户

发布于 2010-07-04 06:40:37

设计模式是描述常见问题的解决方案的方法。它们不是一段特定的代码,通常可以用不同的方式实现。

如果你以工程为例,设计模式可以是“一个轮子”。可能有很多不同种类的轮子,但“轮子”的一般概念是保持不变的。

在软件开发中,对于常见问题也有类似的想法,例如,如果你告诉另一个开发人员你使用了“工厂”,他大致知道你的意思,就像工程师大致知道你说的“轮子”是什么意思一样。

因此,设计模式是一种澄清开发人员之间沟通的方式,并作为可重用的想法。它们有点像更抽象的编程解决方案的库,这些解决方案大多独立于您使用的实际语言。

票数 6
EN

Stack Overflow用户

发布于 2010-07-04 06:34:38

当您将设计模式称为“蓝图”时,您就说对了。

它们是一种解决问题的“标准”方法,您可以根据自己的环境进行调整。模式的完整描述应该包括边缘/边角情况,使您可以更直接地编写解决方案。

您仍然必须确保选择正确的模式来解决您的问题,并且知道它何时何地适用,以及可能更重要的是,它不适用于何处。

这不是一个“银弹”,它将为您编写代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3173058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档