c++ - 现代 C++ 在多大程度上消除了对设计模式的需求?
问题描述
GoF 于 1994 年出版的设计模式书是用类似 C++ 的语言编写的,许多代码示例都是用 C++ 给出的。其他语言的程序员认为他们的语言不需要这 23 种设计模式,因为这些语言具有使许多模式变得多余的特性。
来自维基百科:
对设计模式的主要批评是,它的模式只是 C++ 中缺失特性的变通方法,用冗长的具体模式代替了优雅的抽象特性,本质上成为“人类编译器”或“手动生成某些宏的扩展”。Peter Norvig 演示了设计模式中的 23 种模式中有 16 种在 Lisp 或 Dylan 中被简化或消除(通过直接语言支持)。
自《设计模式》一书出版以来,C++ 经历了五次修订(在 98、03、11、14、17 年)。所以问题是,现代 C++ 在多大程度上简化或消除了对这 23 种设计模式的需求?
最好将设计模式与 C++ 语言特性一起列出,从而消除或简化对该模式的需求。
解决方案
你是对的,现在不需要许多模式。然而,像适配器这样的一些架构模式是“语言不敏感的”,并广泛用于企业编程以解耦层。像访问者这样的一些模式比基于新语言特性的替代模式更具可读性和更好的控制性。所以我认为设计模式应该修改而不是丢弃。
推荐阅读
- django - Django admin import export - 'NoneType' 对象不可调用
- anylogic - 布尔变量可以控制状态图吗?
- javascript - 数组值的 Ramda 路径
- xamarin.forms - 好奇拍摄的条形码照片是否可以在 Xamarin 模拟器中使用
- java - 如何将此代码转换为switch语句
- webpack - 带有服务工作者的 Webpack 不能在 Angular 6 APP 中工作
- ios - 如何量化主线程上的等待块数?
- javascript - Ionic 3 升级到 Ionic 4:模板解析错误 组件冲突
- c# - 在 C# 中使用 ParquetSharp 库进行基于行的访问,该库基于 apache-parquet-cpp(箭头)
- python - 提取腌制数据