GoF于1994年出版的“设计模式”( Design )一书是用类似于C++的语言编写的,许多代码示例都是用C++编写的。其他语言的程序员认为他们的语言不需要这23种设计模式,因为这些语言的特性使得许多模式变得多余。
维基百科:
对设计模式的一个主要批评是,它的模式只是弥补了C++中缺少的特性,用冗长的具体模式取代了优雅的抽象特性,本质上成为“人工编译器”或“手工生成某些宏的扩展”。Peter表明,在Lisp或Dylan中,在设计模式的23种模式中,有16种模式被简化或消除(通过直接语言支持)。
自“设计模式”( Design )出版以来,C++经历了五次修订( 98、03、11、14、17)。所以问题是,现代C++在多大程度上简化或消除了对这23种设计模式的需求?
最好列出设计模式和C++语言特性,这样可以消除或简化对该模式的需求。
发布于 2018-10-03 11:54:37
你说得对,现在不需要很多模式。然而,一些像适配器这样的体系结构模式是“语言不敏感的”,并且在企业编程中被广泛地用于解耦层。有些模式,如访问者,更易阅读和更好地控制基于新语言特性的替代方案。因此,我认为设计模式应该修改,但不应该放弃。
发布于 2018-10-03 12:25:28
我想说的是,设计模式是使用语言特性在特定语言中建模的概念。
例如,正如注释中所述,命令模式可以使用std::function或任何其他可调用的方式建模。
但是,模型并不会使概念变得不必要。概念是思考和设计的非常有用的工具,而模型则是在实现时出现的。
https://stackoverflow.com/questions/51808990
复制相似问题