Design patterns 设计模式与语言适用性

Design patterns 设计模式与语言适用性,design-patterns,Design Patterns,我刚刚开始研究设计模式,我读到的是模式通常独立于语言 在编程中,我们有OOP和非OOP(非OOP有名字吗?) 我最近一直在玩这个游戏,它似乎对OOP来说几乎是反直觉的。事实上,它只是一堆有效的“Go-To方法”(在某种程度上让我想起Pascal),似乎有点“反对”OOP想要的行为 这是否意味着某些模式更适合于语言(我理解有些不完全适合的东西并不意味着它不适合)。模板模式实际上是OOP的一个很好的例子,如果操作得当,因为您可以通过抽象类型引用一组相关对象,并以类似的方式对它们进行操作,因为它们都实

我刚刚开始研究设计模式,我读到的是模式通常独立于语言

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

我最近一直在玩这个游戏,它似乎对OOP来说几乎是反直觉的。事实上,它只是一堆有效的“Go-To方法”(在某种程度上让我想起Pascal),似乎有点“反对”OOP想要的行为


这是否意味着某些模式更适合于语言(我理解有些不完全适合的东西并不意味着它不适合)。

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


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

模式独立于语言,但通常特定于语言家族。有OO语言通用的模式,也有函数语言通用的模式,等等

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


关于OOP和非OOP,有多个非OOP范式:函数语言、过程语言等。许多是真正的多范例语言,例如C++,它提供了面向对象、过程和功能语言的特征。另一方面,很多人不认为它是真正的OO语言,因为类型不是C++中的第一类对象,而且它们可能是正确的。< / P>是的,我没有考虑多态性。