设计模式列表仅适用于静态类型语言而不适用于动态类型语言?

发布于 2024-10-31 11:07:01 字数 54 浏览 0 评论 0原文

有人知道仅适用于静态类型语言但不适用于动态类型语言的设计模式列表吗?

例如策略

Anyone know a list of design pattern only applicable to static typing language but not dynamic typing language?

E.g. strategy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

筱果果 2024-11-07 11:07:01

设计模式有两个方面:职责划分,以改进程序结构、实现灵活性和易于维护。以及一组特定于语言的构造来实现该模式。在某些情况下,我们通过巧妙的设计来补充语言的自然功能。

策略模式在此处描述为

定义一系列算法,封装每个算法,并使它们可以互换。策略使算法能够独立于使用它的客户端而变化。

现在,这种将客户端与实现细节解耦的设计目标肯定适用于动态语言和静态语言。

细节有所不同,因为静态语言导致我们声明显式接口并对客户端进行编码以使用接口,而动态语言可以使用“鸭子类型”,但编码来处理在预期鸭子的地方接收狮子。 (animal->eat() ...不不!不要吃我!)

我期望看到动态代码中大多数设计模式的示例,这些示例可能以不同的方式表示 - 相同的关注点分离仍然很重要。

There are two aspects to a design pattern: a partitioning of responsibilities in order to improve program structure, enable flexibility and ease maintenance. And a language-specific set of constructs to implement that pattern. In some cases we are supplementing the language's natural capabilities with cunning design.

Strategy pattern is described here as

Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

Now this design goal of decoupling clients from the specifics of implementation is surely applicable in dynamic languages as well as static languages.

The details vary because Static languages lead us to declare explicit Interfaces and code the clients to use interfaces while dynamic languages can use "Duck Typing" but coding to deal with receiving lions where ducks were expected. (animal->eat() ... no no! not eat me!)

I'm expecting to see examples of most design patterns in dynamic code possibly represented rather differently - the same separations of concerns are still important.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文