为什么我说“设计模式”的设计理念是误人子弟?

我相信很多人一看到这个标题,可能就要准备来喷我了,毕竟自己信奉了多年的东西,自己也花费了大量的时间和精力去学的一个东东,结果被我说成“误人子弟”,心理上和情感上都会很难接受 :)

但是先别急,看完我写的然后再认真思考一下再做决定也不迟。

首先,我要特别强调一下是设计模式的设计理念误人子弟,不是23个设计模式误人子弟,23个设计模式是非常有价值的,都是前辈们的经验总结,有很强的指导意义!

那么,设计模式的设计理念是什么呢?其实就在设计模式书中,第一章的1.6.7章节“设计应支持变化“,中文版原文是这么说的:

上面这个截图的内容就是设计模式所倡导的核心设计理念,一言以蔽之:预测变化!而且是要预测“生命周期内”的变化!

看起来很牛逼啊,预测变化,还要能够预测“生命周期内”的变化。

但是你认真想想就知道了,这怎么可能?

淘宝2004年开始写代码,到2021年已经17年了,这生命周期算17年吧,谁能够在2004年预计2021年?有这个预测能力,早就不写代码了,身价几万亿都有了。

Windows95是95年推出的吧,现在windows系统已经是win11了,生命周期是26年,微软的工程师在95年预测20多年的变化?!

所以,如果你真的在实践中按照“预测生命周期内的变化“,你会发现“一切皆有可能”!你所有的代码都要用上设计模式!

即便你真的吃饱了没事干,按照一切皆有可能的想法去用设计模式,你还是无法应对所有的变化的,现在流行的微服务、云原生,诞生不超过10年,那么10年前的人写代码,怎么预测这种技术趋势?

所以上世纪90年代出版的设计模式一书中提倡的这个设计理念是完全不符合技术发展趋势,也不符合业务发展趋势的

其实《重构》的作者在书中也阐述了类似的观点,书中2.6章节“重构与设计“特别谈到了到底是预测变化,还是通过重构来应对变化,具体如下:

《重构》书中提炼出了个“三次法则”:事不过三,三则重构

我把三次法则改为了更容易理解的“一写二抄三封装“的说法,也就是说:第一次直接写代码,第二次来了类似的需求,拷贝(或者继承等)第一次的代码修改;第三次还有类似的需求,那就重构,此时可以用上设计模式来重构。

事实上,无论是我个人的职业经历,还是各个系统(开源的和商业的)的演进趋势,无一例外的都在证明《重构》的设计理念是正确的,而设计模式的设计理念是错误的!

我们看一下《Apache SkyWalking创始人吴晟:开源如何国际化》这篇文章中,吴晟老板的看法:

所以我们应该做的是:学好23个设计模式,但是记得基于重构的设计理念去应用设计模式!不要一上来就各种神预测然后各种骚操作,这样不但没什么用,还是有很多危害!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值