我相信四个人将设计模式归类为
常见问题的通用解决方案*
因此,是的,当发生相同类型的问题时,模式是相关的。这给我们带来了术语“设计模式”的问题。模式是可以识别的重复发生的事物。因此,实际上没有设计模式,而有问题模式。
对于某些问题,某些编程语言可能具有本机解决方案。“设计模式”一书本身提到,如果您使用的是CLOS,则访问者模式的价值很小,因为CLOS本身就支持多调度,这正是访客模式试图解决的问题。
此外,.NET框架具有内置事件机制,可将事件发布到多个侦听器,从而使Observer模式在此上下文中的相关性降低。
从桌面应用程序更改为Web应用程序**,也改变了我们必须解决的编程问题的类型。“设计模式”一书中的许多模式与桌面应用程序相关,而与Web应用程序无关。当然,对于单页应用程序,这些模式在客户端可能再次相关。
但是,当您是新手程序员并首次遇到新型问题时,设计模式以及诸如“设计模式”或“企业应用程序体系结构模式”之类的书就具有巨大的价值。因为我是第一次被要求实现撤消功能。如果不是《设计模式》这本书的作者,我的实现可能就像是在每次状态更改操作之后存储数据快照***一样,这是一种非常容易出错且效率极低的方法。
因此,是的,随着时间的流逝,某些模式变得越来越不相关,并且当您成为经验丰富的程序员时,您对它们的考虑就更少了。但是对于新手来说,它们是有价值的,只要您记住它们是解决问题的手段-而不是寻求使用尽可能多的手段。
*报价可能不是100%准确,因为它是从内存中提取的
**根据我的经验,企业为内部业务线应用程序选择Web交付机制已经变得非常普遍。
***在学习了函数编程和函数数据结构之后,那么实际上这可能就是我今天要解决的方法。