c++ - 现代 C++ 在多大程度上消除了对设计模式的需求?

标签 c++ design-patterns

GoF 于 1994 年出版的设计模式书是用类似 C++ 的语言编写的 记住,许多代码示例都是用 C++ 给出的。其他语言的程序员觉得 他们的语言不需要这 23 种设计模式,因为这些语言有特性 这使得许多模式变得多余。

来自维基百科:

A primary criticism of Design Patterns is that its patterns are simply workarounds for missing features in C++, replacing elegant abstract features with lengthy concrete patterns, essentially becoming a "human compiler" or "generating by hand the expansions of some macro". Peter Norvig demonstrates that 16 out of the 23 patterns in Design Patterns are simplified or eliminated (via direct language support) in Lisp or Dylan.

自《设计模式》一书出版以来,C++ 经历了五次修订(98、03、11、14、17)。 那么问题来了,现代 C++ 在多大程度上简化或消除了对这 23 种设计模式的需求?

最好将设计模式与 C++ 语言特性一起列出来消除或简化对该模式的需求。

最佳答案

您说得对,现在不需要许多模式。 然而,像适配器这样的一些架构模式是“语言不敏感的”,并广泛用于企业编程以解耦层。 像访问者这样的一些模式比基于新语言特性的替代模式更具可读性和更好的控制性。 所以我认为设计模式应该修改而不是丢弃。

关于c++ - 现代 C++ 在多大程度上消除了对设计模式的需求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51808990/

相关文章:

c# - 默认策略。策略模式 C#

c++ - 如果我知道它的地址,我能以某种方式访问​​它吗?

c++ - 在不使用 if...else 的情况下使用参数声明类对象

design-patterns - 模式 - 始终由同一方发起的通信

c# - 反设计模式书

algorithm - 递归算法 : suggested patterns and practices?

c++ - std::unique 合并

c++ - 如何使用 Qt 处理 json 中编码的西里尔字母数据?

c++ - 验证输入

c++ - 实现观察者模式 C++