![]() |
1
6
与模式是语言不可知论的观点相反,两者 Paul Graham 和 Peter Norvig 有人认为,使用模式的需要表明您的语言缺少一个特性(访客模式通常被认为是这方面最突出的例子。) 我一般认为“模式”和“习语”的主要区别在于大小。习惯用法是一些小东西,比如“为保存集合的变量类型使用接口”,而模式往往更大。我认为习语的微小之处确实意味着它们更多地是特定于语言的(我刚才给出的例子是Java习语),但我不认为这是它们的定义特征。 |
![]() |
2
11
习语是语言特有的。 模式是独立于语言的设计原则,通常用“模式语言”(一个统一的模板)编写,描述激励环境、优点和缺点等;缺点、相关模式等。 |
![]() |
3
7
当人们从高层(分析师、顾问、学者、方法论大师等)观察程序开发时,看到开发人员在各种情况和环境中一遍又一遍地做同样的事情,那么从观察中获得的智能可以提炼成一种模式。模式是一种使用手边的软件工具“做事情”的方式,这些工具表示一个通用的抽象。
有时候,很多开发人员都以某种方式做事情,但这是一种不好的方式,不应该被推荐。这可以在 反模式 .
因为模式有点理论化和形式化,所以通常会有一个正式的模式(呵呵,单词重载!让我们用“模板”)来描述它们。此类模板可包括:
在C语言中,从
是一种Perl习惯用法,用于循环输入文件并打印出文件中的所有行。在那个语句中有很多隐式变量的用法。同样,除了在Perl中,您不会在任何地方看到这种特殊语法;但是一个老的Perl黑客会快速查看该语句,并立即识别您正在做什么。 |
![]() |
4
3
另一方面,模式更不依赖于语言(尽管它们通常指的是特定的范式)。您可能有一些基础设施来支持它们(例如,Spring for MVC),但它们不是也不会是语言结构,而且您可能需要该范例中的任何语言。 |
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |