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

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

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

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


当前回答

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

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

其他回答

The way I learned design patterns is by writing lots of really terrible software. When I was about 12, I have no idea what was good or bad. I just wrote piles of spaghetti code. Over the next 10 years or so, I learned from my mistakes. I discovered what worked and what didn't. I independently invented most of the common design patterns, so when I first heard what design patterns were, I was very excited to learn about them, then very disappointed that it was just a collection of names for things that I already knew intuitively. (that joke about teaching yourself C++ in 10 years isn't actually a joke)

这个故事的寓意是:编写大量的代码。就像别人说的,练习,练习,再练习。我认为,在您了解当前的设计为什么不好并寻找更好的方法之前,您不会很好地了解在哪里应用各种设计模式。设计模式书应该为您提供完善的解决方案和与其他开发人员讨论的通用术语,而不是对您不理解的问题的粘贴解决方案。

练习,练习,再练习。

你可能读了很多年的关于演奏大提琴的书,但仍然不会用弓演奏乐器,也不会演奏出任何听起来像音乐的东西。

设计模式被认为是一个高级问题;只有当你有必要的经验来认识到它们是有用的,它才与你相关。你能认识到它们的有用是件好事,但除非你亲眼目睹过它们的应用场景,否则几乎不可能理解它们的真正价值。

当你在别人的代码中识别出设计模式,或者在设计阶段识别出一个与模式很适合的问题时,它们就会变得有用;然后检查形式模式,检查问题,确定它们之间的增量是什么,这说明了模式和问题的什么。

这和编码是一样的;K&R可能是C的“圣经”,但从头到尾读几遍并不能给人实际的体验;经验是不可替代的。

问自己这些问题:

他们做什么?

它们是如何耦合的?

什么时候使用它们?

什么时候不应该使用它们?

什么缺失的语言特征会让它们消失?

使用它会导致什么技术债务?

有没有更简单的方法来完成工作?

我发现,要理解或理解某些模式的好处有点困难,除非理解它们解决的问题和其他(更糟糕的)实现问题的方式。

除了GOF和POSA的书,我还没有真正读过,所以我不能给你其他的建议。实际上,您只需要了解问题领域,我认为许多缺乏经验的开发人员可能无法欣赏模式的好处。这不是对他们的轻视。当一个人不得不首先与糟糕的选择作斗争时,接受、理解和欣赏好的解决方案要容易得多。

祝你好运

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

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

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

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

我的2美分…