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

时间:2018-08-12 12:49:53

标签: c++ design-patterns

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

来自维基百科:

  

对设计模式的主要批评是它的模式只是C ++中缺少功能的解决方法,用冗长的具体模式代替了优雅的抽象功能,本质上成为了“人工编译器”或“手动生成某些宏的扩展”。彼得·诺维格(Peter Norvig)证明,在Lisp或Dylan中(通过直接语言支持)简化了或消除了设计模式中23个模式中的16个。

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

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

2 个答案:

答案 0 :(得分:1)

您是正确的,现在不需要许多模式。 但是,某些架构模式(例如适配器)是“语言不敏感的”,并广泛用于企业编程中以使层分离。 与基于新语言功能的替代方法相比,诸如访问者之类的某些模式更具可读性和更好地控制。 因此,我认为应该修改设计模式,而不应该放弃。

答案 1 :(得分:0)

我想说设计模式概念,它们是使用语言功能以特定语言进行建模的。

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

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