设计模式和语言适用性

时间:2012-10-02 12:37:31

标签: design-patterns

我刚刚进入设计模式,我正在阅读的是模式通常独立于语言。

在编程中我们有OOP和非OOP(有非OOP的名字吗?)。

我最近一直在玩template pattern,而且对于OOP而言似乎几乎是违反直觉的。事实上它只是一堆“Go To Methods”(让我想起Pascal到一定程度)似乎有些“反对”OOP的行为方式。

这是否意味着某些模式更适合语言(我欣赏有些不完美的东西并不意味着它不合适)。

2 个答案:

答案 0 :(得分:2)

模板模式实际上是一个很好的OOP示例,因为你可以通过抽象类型引用一组相关的对象,并以类似的方式对它们进行操作,因为它们各自实现相同的“契约”方法。据说这种模式定义了算法/程序结构,但在大多数基本情况下,它实际上只是polymorphism

你可以说某些模式更适合其他语言,但你几乎可以使用任何语言的任何模式。

答案 1 :(得分:1)

模式独立于语言,但通常特定于语言系列。 OO语言有一些共同的模式,有些是函数式语言共有的模式等。

让我们以访问者模式为例:它在OO语言的一个子集中很流行,它不支持多个调度(C ++,Java,C# - 缺少dynamic s)。但是,在多个调度是语言特性的语言中,它是完全不必要的(Common Lisp,Clojure)。

关于OOP与非OOP,存在多种非OOP范例:函数语言,过程语言等。许多实际上是多范式语言,例如C ++ - 它提供OO,过程和函数语言的功能。另一方面,许多人并不认为它是一种真正的OO语言,因为类型不是C ++中的第一类对象,它们可能是正确的。