现代C++在多大程度上消除了对设计模式的需求?
To what extent modern C++ obviate the need for design patterns?
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
或任何其他可调用对象进行建模。
但是模型不会使概念变得不必要。概念是思考和设计的非常有用的工具,而模型在实现时会出现。
相关文章:
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 资源管理设计模式
- 用于在回调中调用解析器的设计模式
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 在这种情况下我应该使用哪种设计模式
- C++中物体改变识别的设计模式?
- 确保所有构造函数调用相同的函数 c++ 设计模式
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 设计模式,以避免不必要地添加抽象函数以适应新功能
- 工厂设计模式优化
- 使用C++模板的数据映射器设计模式
- 为什么以及如何使用原型设计模式
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 在C++中创建观察器设计模式的好方法
- 现代C++在多大程度上消除了对设计模式的需求?
- 对于存储另一个类所需信息的类,例如其构造,是否有设计模式?
- 下面抽象工厂设计模式的实现是正确的吗
- sql记录集函数的状态设计模式
- 是否有可以处理方法调用依赖关系的设计模式?
- 使用 C++ 设计模式