1

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

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

我最近一直在玩模板模式,它​​似乎对 OOP 几乎是违反直觉的。事实上,它实际上只是一堆“转到方法”(在一定程度上让我想起了 Pascal),这似乎有点“反对”OOP 想要表现的方式。

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

4

2 回答 2

2

如果做得好,模板模式实际上是 OOP 的一个很好的例子,因为您可以通过它们的抽象类型引用一组相关的对象,并以类似的方式对它们进行操作,因为它们每个都实现了相同的方法“契约”。据说该模式定义了算法/程序结构,但在大多数基本情况下,它实际上只是多态性

您可能会争辩说某些模式更适合其他语言,但您几乎可以在任何语言中使用任何模式。

于 2012-10-02T12:46:59.773 回答
1

模式独立于语言,但通常特定于语言家族。有一些面向对象语言共有的模式,一些是函数式语言共有的,等等。

让我们以访问者模式为例:它在不支持多重分派(C++、Java、C# - short of dynamics)的 OO 语言的子集中很流行。然而,在多重分派是一种语言特性的语言(Common Lisp、Clojure)中,它是完全没有必要的。

关于 OOP 与非 OOP,有多种非 OOP 范式:函数式语言、过程式语言等。许多是真正的多范式语言,例如 C++——它提供了面向对象、过程式和函数式语言的特性。另一方面,许多人并不认为它是一种真正的 OO 语言,因为类型不是 C++ 中的一等对象,而且它们可能是正确的。

于 2012-10-02T14:10:27.570 回答