学习设计模式的资源

时间:2009-04-04 08:02:41

标签: c# asp.net design-patterns

最近我发现了这种设计模式的概念,并且对它非常热衷。你们能提出一些资源来帮助我深入了解设计模式吗?

15 个答案:

答案 0 :(得分:16)

你知道,对我来说,最好的书之一是Head First Design Patterns。我个人喜欢他们用来传达材料的风格。

答案 1 :(得分:4)

维基百科,Gang of Four一书,如果你对C#实施特别感兴趣,那就是一个不错的网站here

答案 2 :(得分:3)

这是关于DnrTV

上的设计模式的非常精彩的截屏系列

Part 1 Part 2 Part 3 Part 4 Part 5

希望这更吸引人;)

答案 3 :(得分:3)

最好的书之一(如上所述)是 Head First 系列,因为它提供了很好的类比和现实世界的例子。

还有其他不错的Java设计模式书籍。此外,专门针对该主题的网站(参见上面的帖子)

虽然 Gang of Four 这本书是我第一次阅读这个主题,但我认为你应该避免它,特别是如果你的出发。当时这是参考,但今天有很多书可供你选择。

但是,我明确强调了这一点......实践是最终的学习工具。在阅读了几本关于这个主题的书后,我100%肯定了解和理解这些模式。当我试图实际实现其中的一些时,我很快意识到我的知识主要是“理论”,而我的理解力甚至不是很接近。对我的自我造成巨大打击!

我开始测试并挑战我的同伴,并很快得知他们和我在同一条船上。我发现99%的程序员都宣称会知道模式,但是当真正进行测试时,只有大约1/3的人真正了解这个主题。

我打算在一个或多个复杂系统中实现尽可能多的模式。我把理论付诸实践,我学到的是金矿。

我的经验中最具挑战性的一个方面是每个模式都很简单。但有时将一堆模式链接在一起可能更具挑战性。

我鼓励你把理论付诸实践!

Jeach!

答案 4 :(得分:2)

四人一组design patterns book是标准。如果你对C ++感到满意,我推荐它。

Head first design patterns也很好,特别是如果你喜欢视觉辅助工具并且想要在50年代的餐馆里学习设计模式。例子是Java。

有时有多种方法可以在给定的编程语言中实现模式(例如,请参阅此discussion of options for implementing the Singleton pattern in C#),因此可能值得让一本书简洁地描述常见模式,而另一本书则建议最佳方式用你最喜欢的语言来实现它们。

答案 5 :(得分:2)

我经常引用此网站:Design Patterns。它有一个很好的写作,包括免费的所有流行设计模式的例子。

答案 6 :(得分:1)

答案 7 :(得分:1)

首先设计模式书是一本很好的阅读。

如果您想测试您对设计模式的了解,请参阅design patterns quiz

答案 8 :(得分:0)

答案 9 :(得分:0)

真的,我认为学习它们的最好方法是深入理解您的语言(基于您的标签的C#),然后真正致力于实现良好的关注点分离,低耦合和高凝聚力的目标。 I'd read and study Robert Martin's writings about SOLID principles.

然后(这是最重要的部分),在开发软件时尝试遵循这些原则。你会发现你开始做某些事情,后来它会打动你,“哦!这就是战略模式。”这正是“模式运动”所展示的......人们以某种​​语言工作,试图实现良好的软件设计,会发现自己会找到遵循某些常见模式的解决方案。

答案 10 :(得分:0)

答案 11 :(得分:0)

我发现Design Patterns Explained是一个很好的介绍性文字。 “四人帮”一书是那些已经了解模式的人的参考。

答案 12 :(得分:0)

Martin Fowler的网站提供了大量信息:http://martinfowler.com/articles.html。 其中大部分内容也在他的书Patterns of Enterprise Application Architecture中进行了介绍。

答案 13 :(得分:0)

对于那些使用C#的人,我发现 C#中的设计模式比GoF的书更容易阅读。当然,这些示例都在C#中,并且连接到Microsoft的模式命名。

答案 14 :(得分:0)

去年我通过C# 3.0 Design Patterns购买并阅读了Judith Bishop,我对此感到非常满意,之前曾试图通过C#获取Go4和Design Patterns。

这涵盖了标准的模式集,按照相似性分组,按复杂程度增加的顺序排列,但也将它们与C#3.0的语言特性联系起来,因此您可以从具有接口和抽象类的简单案例开始,然后向上移动扩展方法,泛型,匿名类型,函数等 - 这是学习两者的一种非常好的方法。

所有内容都以易于阅读的格式呈现,包含大量真实示例和方便的源代码。