我已经阅读了大约4-5本关于设计模式的书籍,但我仍然觉得我在设计模式方面还没有接近中级水平?

我应该如何学习设计模式?

有关于设计模式的好书吗?

我知道这只会来的经验,但必须有一些方法来掌握这些?


当前回答

我的建议是组合实现其中的一些,并分析它们的一些实现。例如,在. net中,如果您查看数据适配器,就会发现有一些适配器模式的使用,如果稍微深入研究框架,还会发现其他一些适配器模式。

其他回答

对于书籍,我推荐《设计模式解释》和《头部优先设计模式》。要真正了解这些模式,您应该查看现有的代码。寻找你已经在使用的模式。查看代码气味和可以解决它们的模式。

在我看来,阅读设计模式,练习编码的概念并没有真正的帮助。当你读这些书的时候。寻找特定设计模式解决的基本问题,从创建模式开始是最好的选择。2. 我相信你过去写过代码,分析一下你是否遇到了设计模式旨在提供解决方案的相同问题。3.尝试重新设计/重构代码,或者重新开始。

关于资源,你可以查看这些

www.dofactory.com 设计模式:可重用面向对象软件的元素(Addison-Wesley专业计算系列),作者:Erich Gamma、Richard Helm、Ralph Johnson和John M. Vlissides Martin Fowler的《企业应用程序体系结构模式》

1是快速入门,2是深入学习。第3节将解释或应该让你认为你在第2节中学到的东西适用于企业软件。

我的2美分…

最好的方法就是用它们开始编码。设计模式是一个伟大的概念,仅仅通过阅读很难应用它们。从网上找到一些示例实现,然后围绕它们进行构建。

数据和对象工厂页面是一个很好的资源。他们会讲解这些模式,并给出概念上和现实世界中的例子。他们的参考资料也很棒。

我的建议是组合实现其中的一些,并分析它们的一些实现。例如,在. net中,如果您查看数据适配器,就会发现有一些适配器模式的使用,如果稍微深入研究框架,还会发现其他一些适配器模式。

对于这样一个老问题,我只有两分钱

有些人已经提到,实践和重构。我认为学习模式的正确顺序是:

学习测试驱动开发(TDD) 学习重构 学习模式

大多数人忽略了1,许多人相信他们可以做2,几乎每个人都直接去做3。

对我来说,提高软件技能的关键是学习TDD。这可能是一个痛苦而缓慢的编码过程,但首先编写测试肯定会让您对代码进行很多思考。如果一个类需要太多样板文件或者很容易崩溃,你很快就会注意到不好的味道

TDD的主要好处是你不再害怕重构你的代码,并迫使你编写高度独立和内聚的类。如果没有一套好的测试,触摸没有损坏的东西就太痛苦了。有了安全网,你将真正冒险对你的代码进行巨大的更改。这是你真正开始从实践中学习的时刻。

Now comes the point where you must read books about patterns, and to my opinion, it is a complete waste of time trying too hard. I only understood patterns really well after noticing I did something similar, or I could apply that to existing code. Without the safety tests, or habits of refactoring, I would have waited until a new project. The problem of using patterns in a fresh project is that you do not see how they impact or change a working code. I only understood a software pattern once I refactored my code into one of them, never when I introduced one fresh in my code.