首页 > 解决方案 > 现代 C++ 在多大程度上消除了对设计模式的需求?

问题描述

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

来自维基百科:

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

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

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

标签: c++design-patterns

解决方案


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


推荐阅读