编程语言和设计模式

时间:2008-09-24 14:11:05

标签: design-patterns programming-languages

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

我有兴趣在其他语言中看到一些常见的设计模式,如Forth,Icon,Lisp等。简短描述它们的外观以及为什么它们需要一种语言才会很好。也许与另一种语言的简短比较可以在没有设计模式的情况下解决这个问题。

5 个答案:

答案 0 :(得分:8)

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

如果你看过两三次,你就会看到一种模式。如果你能够描述背景,问题,解决方案和后果,你就会把模式从模糊的东西提升到具体而具体的东西。

在非OO语言中,模式通常不会被命名和编目。不知道为什么会这样,似乎是这样。

答案 1 :(得分:3)

对于LISP中的设计模式,您可以阅读Peter Norvig撰写的this

引用this slide

  

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

答案 2 :(得分:2)

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

  • lambda和closure(匿名函数和捕获环境)
  • 高阶函数(处理函数的函数)
  • 宏(语法extesnions)
  • 不同的评估策略(懒惰评估,回溯)
  • 第一类函数,类,名称空间,模块等
  • 动态环境(例如,随时更换功能)

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

C#和.Net中的代表和事件使实现observer pattern变得微不足道,因为它是如此常用,例如处理GUI事件。