如何学习设计模式?

都说设计模式很重要,但是对于一个刚入门经验不足的新手,如何有效的学习设计模式,请大神们指教一二?

阅读 11.2k
12 个回答

光看书并不能让你成为精通设计模式的人,更别说能马上应用到实际项目
建议多读读开源代码,体会别人的代码中是如何应用设计模式的,实际上
真正使用的设计模式,往往是23中设计模式的变体,并非一味对着书本就
可以。JDK源码就是不错的学习设计模式的资料
通过java.io.*,可以学习装饰者模式
通过jdbc的api,可以学习到桥接模式
看java里Proxy的代码,可以学到代理模式
等等...

推荐先读这本《大话设计模式》,先搞明白为什么要用设计模式。

这个是需要经验积累的,平时一点点的思考、应用和改进,不要为了使用设计模式而照猫画虎的搬。

简单来说,设计模式就是一些解决常见问题的方法总结。注意我说的是常见问题,而我们的需求往往是复杂多样的,所以往往都是多种设计模式一起用,或者根据自己的需要变通的做,不一定死照着模式的方法去做。

优雅、高效、实用,是我们追求的,所以设计模式很重要,它让我们更抽象的思考问题。

现在买了一本《Head First 设计模式》。。同新手,,先看这本熟悉下吧。。

先告诉你为什么重要:

  • 一些主流框架里都使用了很多的设计模式,不懂设计模式去了解框架原理的时候会很吃力

  • 减少代码冗余度,使代码易于扩展等

再谈谈书本吧:

  • 《大话设计模式》还成,里面的语言是C#,然而C#和Java很像

  • 《设计模式之禅(第2版)》这本书我翻了一下,感觉还不错,用Java写的

  • 图解系列的最新书籍——《图解设计模式》,图解系列对新手是非常友好的,也是用Java写的,推荐

当然,你也可以去慕课网看一点关于设计模式的视频。讲得还算可以。

然后你要做的是去多写代码,并思考哪些代码可以用哪些设计模式,不要凭空想像,要运用于实战,纸上谈兵是不可取的。

没有大量代码实践, 认真思考

学习设计模式, 犹如设计「空中楼阁」

设计模式就是使用中一些经验的总结,能够解决特定背景下的问题。

首先要理解其能解决什么问题?如何解决的?优缺点? 自己写几个小例子,之后可以看下Java类库中的设计模式的使用,开源框架中设计模式的使用。

总之,多看多写多思考。

刚入门的新手不要去学设计模式,你还有更重要的东西要去学。你要先熟悉你用的语言,再熟悉你用的框架类库的用法,再积累一定的代码量,然后再来学习设计模式。

思想是建立在语言的基础上的,不精通语言,思想如同空中楼阁。

慕课网有个大话php设计模式我觉得讲的还是很明白的,用了很多例子,你会发现其实你自己在编码过程中经常无意间就用到了各种设计模式。

如果你有代码实现,可以学习一下,否则等积累一定经验再来学,不然就是闭门造车,就算学了你也不知道用在什么地方,什么时候写工厂好点?什么时候用观察者模式好点?看了二十几年A片,不如你真正上那么一次床,所以你在开发经验不足的情况下,空有理论也没用,除非你能把模式直接用在你现在正在做的代码里,否则你就简单了解一下,等真正需要时候能想起来有这种东西可能可以用到,到时候再详细去研究,到那种情况,XXX情况下用不用模式就会是你需要思考的第二个问题了

关于设计模式的话,建议先把java这门课程的基础打好,尤其是面向对象的知识。学习设计模式需要以一种由浅入深的过程去学习。一开始的时候,你可能通过视屏讲解,从一些小的例子中了解到一些设计模式,比如观察者模式,桥接模式... ... 然后你会在实战中遇见能够使用设计模式的地方:连接JDBC的时候,创建线程池可以用到工厂模式等之类的情况,就不要吝啬,大胆去用,出了问题再debug。久而久之,你就对设计模式有一个深入的了解了。个人觉得单纯的只是去看书是无法解决问题的。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题