百科问答小站 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解耦,实则强行穿刺游戏系统以暴露事件。若遇需求变更需要监听尚未公开的事件,则会带来额外负担。而成就系统不可能一开始就设计完全,游戏系统只好将所有可能监听的事件逐一暴露以降低未来可能的修改,却又会陷入过度设计的泥沼。




  

相关话题

  PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点? 
  为何在AI领域Java没有python火? 
  程序员必备的书籍有哪些? 
  许多老程序员不建议新手用IDE集成开发环境,而是用编辑器+编译器,用命令行编译,这个怎么看? 
  你见过的最差的程序员是怎样的? 
  程序员做到什么程度才不会被算作 API caller? 
  码农们最常说的「谎言」有哪些? 
  学习python与c语言哪个好? 
  程序员很闷骚么? 
  为什么大多数程序主函数成功时都return 0; 不return 1; ? 

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





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利