大讨论:学习和应用设计模式的经验、教训、疑问等_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 大讨论:学习和应用设计模式的经验、教训、疑问等

大讨论:学习和应用设计模式的经验、教训、疑问等

 2010/9/19 22:57:28  chjavach  http://chjavach.javaeye.com  我要评论(0)
  • 摘要:这次讨论是一次失败的尝试!以后不再有类似的行动了!谢谢大家!虽是一番好意,但是事情办得不好,就此作罢!大讨论:学习和应用设计模式的经验、教训、疑问等在JavaEye发设计模式方面的文章也2个月了,获得了很多朋友的关爱和支持。这也说明了很多朋友对设计模式是很感兴趣的。当然大家都知道,学习和掌握设计模式,是快速提高自身设计能力和技术水平的捷径,更是想要做设计和架构的朋友的必备知识!可是很多朋友,尤其是初学但特好学上进的朋友,经常问这样的问题:如何才能真正理解和掌握设计模式呢
  • 标签:大讨论 学习 应用设计模式 经验 教训 疑问等

??? 这次讨论是一次失败的尝试!以后不再有类似的行动了!谢谢大家!

???? 虽是一番好意,但是事情办得不好,就此作罢!

?

大讨论:学习和应用设计模式的经验、教训、疑问等

?

?

??? 在JavaEye发设计模式方面的文章也2个月了,获得了很多朋友的关爱和支持。这也说明了很多朋友对设计模式是很感兴趣的。

???

??? 当然大家都知道,学习和掌握设计模式,是快速提高自身设计能力和技术水平的捷径,更是想要做设计和架构的朋友的必备知识!

?

??? 可是很多朋友,尤其是初学但特好学上进的朋友,经常问这样的问题:

???????????

????????????????? 如何才能真正理解和掌握设计模式呢?

?

????????????????? 如何才能把设计模式真正应用到我的项目中呢?

?

????????????????? 这些设计模式单独看都好像会,就是不会综合起来用,该怎么办呢?

?

??????????????????......等等好些这样的问题

?

???? 因而,特开始本文,做一个大讨论,希望各位朋友不吝言辞,把自己学习和应用设计模式的 宝贵经验和惨痛教训,学习方法以及学习中的疑问等,一切跟设计模式相关的都可以拿出来讨论,相信对所有的朋友都会有收获。

?

?

先来抛个砖,玉们赶紧砸啊,哈哈!

?

?

一:如何才能真正理解和掌握设计模式呢?
??
? 1:我觉得先得约定一下,到底什么样的标准才算是真正理解和掌握设计模式,当然这个没有国际标准,只能一家之言了.
??? 我认为, 真正理解和掌握设计模式的标准就是:深入领会和掌握模式的设计思想和设计手法的精髓,能够自如的把设计模式应用到实际项目中去,而且不会拘泥于模式的实现形式,通常会根据实际情况进行变形的应用,但是万变不离其宗,这个宗就是模式的设计思想和设计手法的精髓。通俗点说,就是很多朋友说的“无招胜有招”的境界。

? 2:如何才能做到呢?
???? 我认为需要做到如下几条:
???? (1)全面、系统、深入的掌握设计模式的知识,这是基础
???? (2)在实际工作中,反复的尝试使用,并总结得失
???? (3)再回去学习设计模式的理论,并结合应用来深入思考
???? (4)然后再用、再思考
???? (5)直到这些设计思想和设计方式都融入我们自己的思维里面,当我们做东西的时候,能够自然而然的,随意的应用这些知识来解决实际问题,就好像是自己思维的一部分,那就算小有成就了。


二: 如何才能把设计模式真正应用到我的项目中呢?
?
??? 我觉得这个要分两种情况来说,一种是有一定话语权的朋友,另外一种是完全没有话语权的朋友。

1:针对有一定话语权的朋友,可以采用小步快跑的方式在项目中加入设计模式。
??? 具体点说,就是逐步来,先从自己熟悉的,能掌控的模式开始,经过自己的分析和判断,项目中的某个地方或某个功能,可以使用某个模式来解决,于是就尝试着把这个模式加入到项目中,然后及时总结经验教训。
??? 如果第一个模式添加成功了,那就开始第二个,以此类推。类似于重构的方式,但是没有重构那么多的要求。
??? 如果不成功,没有关系,也得到宝贵的教训了,那就总结一下,下次再来,反正项目有的是。
??? 记住了,一定要勇于迈出第一步,其实很多模式都很简单,多用几回就会了。


2:针对没有话语权的朋友
??? 一个方案,就是把自己思考的结果,汇报给有话语权的领导,然后尽力说服他让你去尝试,如果被否,嗬嗬,下一个方案。
??? 第二种方案,“同步并行法”,具体点说,就是自己在家里构建一套跟上班相同或相似的环境,然后利用业务时间,按照自己的想法来尝试一下,并总结经验教训。这种方案就是累人点,但效果也不错,当初我就是用这个方案来学习设计模式的,呵呵。现在大家都有笔记本了,上班和下班用的环境都一样,因此会更方便。

?

?

?

三:这些设计模式单独看都好像会,就是不会综合起来用,该怎么办呢?

?

??? 我觉得这个问题也要分两个层面来说,一个是真的达到能单独使用每个设计模式的水平,另外一个是根本没有掌握单个设计模式如何应用。

?

1:针对真的达到能单独使用每个设计模式的水平的朋友,建议:

(1)多看看设计得很好的开源项目,当然由于这些开源项目都很大,要有意思的挑选其中的某些模块来看

(2)细看的内容不宜挑得过大,太大了,根本看不过来,或者很难完全领悟;也不宜挑得过小,太小了看不出多个模式组合应用的精妙之处

(3)切忌不要看成源代码注释型的,很多朋友分析和研究开源项目,就局限在代码上,如何一步一步调用起来的,然后在代码上写注释,觉得这样自己就看懂了。

????? 其实不然,真正看别人的系统,在没有设计文档的情况下,难度是非常高的,你需要通过看源代码,来分析别人的分析过程,设计过程,需要从整体系统上、从设计思路上去理解和把握,这样才能真正学到人家设计的精髓。

????? 简单点说,比如把这个开源项目已经实现的功能作为需求交给你,你怎么样一步一步分析和设计,得到你看到的最终的样子,这个难度是很大的,必须要自身达到相当的高度才行。

(4)看到好的设计或者好的设计模式的组合,要多去模仿,然后再实际项目中多尝试使用,然后体会这样组合是否合适,同时深化自己对单个模式本质的领悟

?

??? 小结一下:就是要多看设计较好、大小合适的项目;然后多尝试,多使用;然后就是多思考和多总结。

?

2:针对根本没有掌握单个设计模式如何应用的朋友,建议:

(1)平和心态,避免眼高手低

(2)切切实实从基础理论开始,深入掌握和领会每个模式的功能、基本结构、实现手法、适用场景、使用效果等等

(3)小范围的尝试1-3个模式的组合,估计刚开始,更多的模式组合也不太容易控制,别着急,慢慢来

(4)在应用中不断加深对设计模式的理解,为综合应用这些模式打下坚实的基础

(5)到了一定程度,就可以参看 1 的建议了

?

???? 记住:日积月累,必有所成

?

?

?

?

?

?

先来抛个砖,玉们赶紧砸啊,哈哈!

发表评论
用户名: 匿名