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

To what extent modern C++ obviate the need for design patterns?

本文关键字:设计模式 需求 C++ 程度 现代      更新时间:2023-10-16

GoF于1994年出版的《设计模式》一书是用类似C++语言编写的 考虑到许多代码示例,C++中给出了许多代码示例。其他语言的程序员觉得 他们的语言不需要这23种设计模式,因为这些语言具有功能 这使得许多模式变得多余。

来自维基百科:

对设计模式的主要批评是,它的模式只是C++中缺失特征的解决方法,用冗长的具体模式替换优雅的抽象特征,本质上成为"人类编译器"或"手动生成某些宏的扩展"。Peter Norvig 演示了 Design Patterns 中的 23 种模式中的 16 种在 Lisp 或 Dylan 中被简化或消除(通过直接语言支持(。

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

最好列出设计模式以及消除或简化对该模式的需求的C++语言功能。

你说得对,现在不需要很多模式。 但是,一些体系结构模式(如适配器(是"语言不敏感的",并广泛用于企业编程中以解耦层。 某些模式(如访问者(比基于新语言功能的替代方案更具可读性和更好的控制。 所以我认为设计模式应该修改,但不能丢弃。

我会说设计模式是使用语言功能以特定语言建模的概念

例如,正如人们在注释中所述,命令模式可以使用std::function或任何其他可调用对象进行建模。

但是模型不会使概念变得不必要。概念是思考和设计的非常有用的工具,而模型在实现时会出现。