百科问答小站 logo
百科问答小站 font logo



为什么要学习别人的设计模式? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

你的感觉是对的,事实上设计模式最主要的作用就是装逼。

再强调几次:

设计模式的名称不是业界共识,而且很多名字一点儿都不形象,纯属凑,有些模式被语法取代,有些模式其实蛋疼。和菜谱根本不是一回事儿。

设计模式是基础的OOP套路,既不高深,也不绝对正确,存在了数年才被提炼总结,设计模式就是本普通的入门书籍,价值在于通俗易懂,快速上手,利用一些简单的原则提高代码可复用度。


了解一下以资参考便可,死记硬背,奉为圭臬是装逼过头。



事实上个人甚至觉得原版的《设计模式》就是一本烂书。

因为设计模式的精妙之处必须在特定的场景才能体现,而书中的场景其实很多构造的非常生硬,难以引起共鸣,一些名称并不贴切,还有一些模式其实是很多技巧的组合,一些模式又是一些大的技巧中的一个小环节,提炼出来的23种所谓模式在当时的Java语言上按部就班的开发各种企业软件算是涵盖的比较全面。但是随着语言和技术的发展,许多模式早已过时,还有很多模式显得非常的不合时宜。

反之,软件工程领域的《人月神话》,其中论述的道理即使放到今天甚至十年后都不会过时,作者的段位根本不是一个档次的。



PS:看到反对本来挺高兴,结果一看完全言之无物。《设计模式》中的design pattern自有其价值,但目前显然过誉,而且design pattern多如牛毛,这种所谓经典反而不见得可以开拓思路。提问者自己有所感悟,略有所得,的确无需生搬硬套,正如提问者所说,参考参考本是正道。他人装逼,提问者不爽,我秉笔直言,他人的确装逼,提问者感觉无误。

反对意见中其实错漏百出,例如MVC绝对谈不上design pattern,更不可能出现在所谓的23种design pattern中。MVC是高屋建瓴的模式,决定整个系统的整体架构和模块设计。是architectural pattern的一种,其本质之精髓又在于Model和View的解耦,透过Controller来巧妙协调,早期MVC模式和现在广泛运用于网站开发中的MVC结构神似,而产生的背景不同,解决的问题也有差别。

举例中的成就系统,使用observer pattern解耦,实则强行穿刺游戏系统以暴露事件。若遇需求变更需要监听尚未公开的事件,则会带来额外负担。而成就系统不可能一开始就设计完全,游戏系统只好将所有可能监听的事件逐一暴露以降低未来可能的修改,却又会陷入过度设计的泥沼。




  

相关话题

  程序员女朋友如何给程序员男朋友过生日? 
  你是怎么误打误撞做了程序猿? 
  程序员都有哪些逻辑神操作? 
  调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式,你一般会怎么做? 
  在职程序员们,如何看待高校学生的技术不断更新迭代? 
  在“Google在手,答案都有的”情况下,软件行业研发人员的技术和经验价值体现在什么地方? 
  tkinter可以做出多复杂的界面? 
  1024 程序员节即将到来,在你看来程序员最需要得到哪些保障和关怀? 
  为什么国内每天都在说 Python 有多好,真正招聘的时候却不需要呢? 
  能独立做出一个自己的博客,前端程序员是什么水平? 

前一个讨论
《英雄联盟》是否已经成为当今世界网络游戏的巅峰?
下一个讨论
编程教育以后会成为一门通识教育吗?





© 2024-05-18 - tinynew.org. All Rights Reserved.
© 2024-05-18 - tinynew.org. 保留所有权利