学习/实施设计模式(适用于新手)

Ash*_*cke 85 oop design-patterns

我是一个迷茫的新手和业余爱好者程序员,试图抓住这个,所以请原谅我,如果我的问题有点过时或没有多大意义.

关于设计模式的使用,我看到很多关于SO的问题,我想知道是否有人有很好的资源来学习和实现设计模式?我理解一般的想法,并知道如何/何时使用它们(单身人士,工厂方法),但我知道我错过了.

(以防万一,我的偏好语言是C#,但我可以从其他语言的例子中学习)

Bil*_*ard 84

首先设计模式

替代文字

设计模式维基百科页面是初学者的最佳资源. FluffyCat是另一个优秀的免费在线资源,可用于JavaPHP中的设计模式.

四本书刚是去哪里后,但它是相当先进的,所以我会等到你从其他资源相当牢固掌握.

  • 我看着那本书......讨厌它.所以我拿起了GoF书,从中学到了所有关于设计模式的知识.它有点干,但信息量更大. (5认同)
  • 有关Head First Design Patterns的C#代码示例,请访问http://www.msquaredweb.com/DesignPatterns/HeadFirstDesignPatternsInCSharp.zip (4认同)
  • 我确实发现头的第一本书完全令人作呕.它花了很多时间"有趣"我觉得它很难传达关键思想 - 它们迷失了.阅读它就像看着爸爸试图变得很酷.但GoF书是另一个极端,因此不适合所有人. (2认同)
  • @Bill:我知道,但我同意@Thomas和@Draemon的评论.我的非编程导向的朋友推荐了这一系列的编程类算法书籍,讨厌它们并最终出现在"干燥"的书上,因为每页的信息量更高.这只是一个偏好问题.我从小就读技术书籍,去了一所技术性很强的高中,这一定让我习惯读"干"书.我更喜欢那些没有宠物对我说话和侧面跟踪的书籍,而是让我同化的简单信息. (2认同)

Kee*_*ijk 27

由于各种原因,设计模式很棒:

  1. 为您提供解决常见问题的起点.
  2. 为开发人员提供词汇,以非常紧凑的方式讨论解决问题的某些方法.
  3. 当与了解设计模式并且在解决方案中使用设计模式的开发人员合作时,他们将更快地理解解决方案.

但是当你的目标只是学习设计模式时,我认为你错过了基础知识.所有设计模式都基于更常见的原则.高内聚,低耦合开放闭合原则,DRY,Liskov替代原则等.对于这些基本原理,我将按以下顺序阅读以下书籍:

  1. 首先是面向对象的分析和设计(首先)[图说](平装)
  2. 应用UML和模式(精装)
  3. C#中的敏捷原则,模式和实践(Robert C. Martin系列)(精装)

之后,您已准备好接受四种设计模式的基本组合

  1. 首创设计模式(首位)[图解](平装)
  2. 圣经
  3. 一个不错的网站(不要买任何东西,这是不值得的)http://dofactory.com/Patterns/Patterns.aspx(这个网站的一些实现值得讨论

下一步:

  1. 企业应用架构模式(Addison-Wesley签名系列)(精装)
  2. POSA书籍

永远记住:模式不是目标!

  • 我认为OO的基本原理(封装,继承,多态等)足以让知识开始学习设计模式.您可以通过学习模式学习其他原则(高内聚,低耦合开放闭合原理,DRY,Liskov替代原则等). (2认同)

小智 20

我要补充说,"四人帮"中的" 设计模式"一书对任何对设计模式非常感兴趣的人来说都是一本圣经.

  • 或者对于任何想告诉他们的程序员朋友他们已经阅读过Gang of Four书的人:) (12认同)

Lar*_*ken 14

我的提示:

阅读很多关于不同来源的模式.

试图在你所写的所有代码中强制使用尽可能多的模式,因为这一点不会给出好的结果.相反,让信息在你的大脑中休息一段时间(阅读:几个月).

突然之间,你会发现自己陷入了问题或一段代码的绊脚石,你会模糊地记得你已经看到了一些可能解决这个问题的方法.现在是时候查看您正在考虑的模式的细节并尝试应用它.

无论如何,这对我有用.


pra*_*c84 9

设计模式

本教程网站包含以下子部分

  • 每种设计模式的含义
  • 设计模式的真实世界结构
  • 一个问题陈述
  • 关于这个问题的详细讨论
  • 关于如何到达模式的清单
  • 到达模式时的经验法则.
  • 设计模式的代码片段,包括C#,C++,Delphi,Java和PHP

该站点还包含有关反模式,UML重构的指南.


Jan*_*ann 8

布鲁斯·埃克尔(Bruce Eckel)有一本关于设计模式,虽然它是Java,但它的所有书籍都很棒.最棒的是,他们是免费的!


JPr*_*ers 7

关于设计模式的C#透视图的C#3.0设计模式.

替代文字
(来源:oreilly.com)


Fed*_*oni 5

我发现有用且写得很好的介绍性书籍是 由Alan Shalloway和James Trott(Addison Wesley)设计的设计模式.

替代文字

难道不是从一开始四人帮的书,因为它不是一个入门书通过任何手段.