3

不同的编程语言具有不同的特性或缺少某些特性。设计模式是解决这些缺点的一种方法。我看过关于静态、面向对象语言(Java、C++)的设计模式的书籍和列表,还有关于 Python 设计模式的视频。

我有兴趣看到其他语言(如 Forth、Icon、Lisp 等)中的一些常见设计模式。简短描述它们的外观以及为什么需要它们在一种语言中会很好。也许与另一种无需设计模式即可解决此问题的语言进行简短比较。

4

5 回答 5

9

设计模式有时被称为“惯用语”。在非 OO 语言(C、Forth、COBOL 等)中,它们只是“通常的做事方式”。有时,它们被称为“算法”。每种语言(实际上,每个学科)都有设计解决方案的模式。

如果你已经看到了两三次,你就看到了一个模式。如果你能描述上下文、问题、解决方案和后果,你就已经将模式从模糊的东西提升到了具体和具体的东西。

在非 OO 语言中,模式通常不会被命名和分类。不知道为什么会这样,好像是这样。

于 2008-09-24T16:47:09.960 回答
3

对于 LISP 中的设计模式,您可以阅读Peter Norvig 的这篇文章。

引用这张幻灯片

23 种设计模式中有 16 种是不可见的或更简单的

于 2008-09-24T14:25:00.927 回答
2

在 Lisp 中,您使用的不是设计模式:

  • lambda 和闭包(匿名函数和捕获环境)
  • 高阶函数(处理函数的函数)
  • 宏(语法扩展)
  • 不同的评估策略(惰性评估、回溯)
  • 一流的函数、类、命名空间、模块等。
  • 动态环境(例如随时更换功能)
  • 等等

我真的不知道设计模式在这种情况下意味着什么。如果设计模式是解决某些类型问题应该遵循的配方,那么它就是编程语言或环境中缺乏特性。计算机可以很好地处理重复性任务,因此必须实现设计模式并使用实际参数调用。

于 2008-09-24T14:24:06.733 回答
2

设计模式并不是真的要与任何语言联系在一起。它们是针对常见问题的更通用的解决方案。

于 2008-09-24T14:29:44.253 回答
0

C# 和 .Net 中的委托和事件使得实现观察者模式变得微不足道,因为它非常常用,例如处理 GUI 事件。

于 2008-09-24T14:30:24.843 回答