首页 文章

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

提问于
浏览
85

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

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

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

25 回答

  • 1

    最初的Design Patterns书是所有程序员必读的 .

    这是一本关于每个层面的优秀书籍:布局,清晰度,洞察力,深度 . 这是你第一次阅读封面的好书之一,然后作为参考使用,直到你完全知道它为止 .

    你可以从Wikipedia page开始,但也要用这本好书来对待自己 .

  • 2

    Head First Design Patterns与其他人已经注意到的一样好 . 除此之外,当然还有原书和C#设计模式 . 还有提到的好网站 .

    除了自学,我还是认真地建议您开始或参加您所在地区的 pattern study group . 请参阅A Learning Guide To Design Patterns以获得解释和很好的顺序来研究模式 . 我们这样做了,我可以诚实地说,我不会像现在这样理解 . 每周与其他感兴趣的人会面会让你在学习像设计模式这样抽象的东西时会受到惊人的训练 .

    快乐学习!

  • 84

    我的提示:

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

    尝试将尽可能多的模式强制转换为您正在编写的所有代码,因为这一点不会产生良好的结果 . 相反,让信息在你的大脑中停留一段时间(阅读:几个月) .

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

    无论如何,这对我有用 .

  • 1

    Head First Design Patterns

    alt text

    Design Pattern Wikipedia page是初学者的最佳资源 . FluffyCatJavaPHP中设计模式的另一个优秀的免费在线资源 .

    Gang of Four book之后会去哪里,但是等到你对其他资源的掌握非常牢固 .

  • 2

    布鲁斯·埃克尔(Bruce Eckel)有一个book on design patterns,虽然它像他的所有书籍一样令人惊叹 . 最棒的是,他们是免费的!

  • 2

    Applying UML and Patterns作者Craig Larman . 从分析,设计和使用简单案例场景的基础开始 . 以简单的方式介绍大多数基本模式 .

  • 2

    Martin Fowler的企业应用程序架构(精装)模式

    Joshua Kerievsky重构模式(精装)

    持续集成:提高软件质量和降低风险(平装)由Paul Duval等人 .

    超越软件架构:由Luke Hohmann创建并维持获奖解决方案(平装本)

  • 5

    一旦你读过Head First Design Patterns,我还建议在Refactoring to Patterns有一个shufty .

    注意:代码示例使用Java,但应该与C#示例非常相似...

  • 3

    我发现本网站上的Design Pattern文章非常容易理解

    Design Patterns in C#

  • 7

    上述评论的注释 .

    A Quick Reference For GOF Patterns

    这是一个你可以开始的好地方dofactory.com/patterns/patterns.aspx - 你可以找到每个模式的链接,以及相应的实现 .

    但是,请记住这些是GOF模式 . 一旦您在OOAD中获得足够的专业知识,您可能还需要阅读和理解高级模式 . Head First Design Patterns是一个良好的开端,在取得一些进展后,请使用Martin Fowler的企业应用程序架构模式 .

    Applying Design Patterns - The Thought Process

    另一个主要方面 - 应用设计模式与了解它们同样重要 . 阅读这些文章也可能对您有所帮助 .

    Applying Design Patterns Part I

    Applying Design Patterns Part II

    希望这可以帮助

  • 2

    模式包括程序员用来谈论抽象设计的高级词汇 . 如果要重用抽象解决方案,按名称引用它会很有帮助 . 如果您发明了一个模式,那么进行一些检查以确保它没有被赋予名称是专业的 . 如果已经命名,那么描述可能是有用的 .

    在你编写了一小部分代码之后,你会发现自己编写了类似于之前编码的东西 . 这是一种模式 . 即使它是一个微小的模式,也值得注意 . 有更好的模式吗?您是否看到某些微小模式协同工作以解决更大的问题?那么下次,当你想要解决更大的问题时,整个模式作为一个单块进入你的脑海 . 充实细节的代码行变得机械化 .

    你越注意到模式,更容易编程,你会越欣赏其他程序员制定的一些最大和最好的模式 . 尝试掌握MVC模式 . 无论如何,即使在微小的设计决策中,变化也会出现在各处 .

  • 1

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

    • 为您解决常见问题提供了一个开始 .

    • 为开发人员提供了一个词汇表,可以用非常紧凑的方式讨论解决问题的某些方法 .

    • 与了解设计模式的开发人员合作,并且在解决方案中使用设计模式时,他们将更快地理解解决方案 .

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

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

    下一步:

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

  • 20

    设计模式

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

    每个设计模式的

    • Intent

    • Real World Structure 为设计模式

    • A Problem statement

    • 关于这个问题的详细讨论

    • Checklist 关于如何达成一种模式
      到达模式时

    • Rules of thumb .

    • Code snippets 为设计模式,包括 C#, C++, Delphi, Java and PHP

    该网站还包含 Anti PatternsUMLRefactoring 的指南 .

  • 4

    设计模式就像任何库函数一样,阅读它们,然后当出现问题时,设计模式将出现在“Toolchest”中 . 有许多设计模式的书籍都是在最初的“四人帮”设计模式之后形成的 .

    对于任何程序员来说,我认为和福勒的重构书是绝对的最低要求 .

  • 1

    我建议你看一下Jean Paul Boodhoo关于DNRtv上的揭秘设计模式的关键词(?),下面提供的网址 . 视频广播涉及Singleton,Abstract Factory等等 - 不同之处在于您可以在讨论理论时观察他的代码 . 很高兴在平日下雨的时候看午餐 .

    http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum=68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92

  • 2

    对于我和我的同事们研究了Pattern Study Group之后的设计模式 . 他们准备了我们应该按顺序学习的每个模式的列表,并且还有一些开头的问题,可以在小组中进行更多的讨论 .

  • 2

    对于那些经验不足以深入研究设计模式的人来说,这对我来说没有多大意义 . 很高兴知道它们存在,但此时你应该更多地关注其他事情,而不仅仅是学习设计模式 .

    它们在问题的背景下是有用的 - 作为新/初学者开发者的概念,除了知道你应该随时随地使用它们之外,它们实际上并没有太多的实用 Value .

    编辑澄清 - 许多设计模式是某些领域中出现的问题的结果 . 很难想象一个新的程序员(IMO)知道用于某些问题的设计模式 . 就像我们在CS研究中获得一些算法一样,我们需要了解我们可以对模式及其好处做些什么,但是当一个人仍在构建hello world或发现stl时,对设计模式的实际需求并不多 . 模式很棒 . 但它们不是银弹 .

    (既不是CASE(工具),也不是UML,也不是SCRUM,也不是TDD,也不是STL,也不是Java,也不是XML等 . )这些都只是我们专业的一部分,并将这些主题视为第二个来是天真的 .

  • 9

    一旦理解了这个概念,就可以看看Eclipse源代码或设计,这些模式的很多很好的例子(毫不奇怪,Gamma是设计师之一) .

  • 4

    我要补充说"Gang of four"中的Design Patterns书是对任何对设计模式非常感兴趣的人的圣经 .

  • 14

    对于网站,一个非常好的网站是http://ajaxpatterns.org,来自ajaxian网站的开发者之一

  • 8

    在花钱买书之前,我会推荐维基百科的优秀design patterns页面 . 也适用于不同的Google for "design pattern screencasts"或在YouTube上搜索"design patterns" . 以不同方式呈现相同的信息通常有助于减少便士 .

    Gang of Four书是关于最知名图案的权威文本,但不是那么容易阅读,而C示例并不是每个人都喜欢的 .

    Head First Design Patterns文本更容易访问,但只包含Gang of Four模式的子集 .

    最重要的是了解特定模式的用途和原因 . 然后在网上搜索您选择的语言的实施示例并进行实验,直到您“得到它” . 在继续下一个模式之前先了解一种模式 . 每个人都比其他人更了解某些模式(并且有数百个鲜为人知的模式) .

    只是继续堵塞 .

  • 1

    如果您阅读有关设计模式的信息,您会发现Java似乎已经实现了一些 .

    查看任何框架的源代码,您可以收集有关设计模式的信息 . 我个人认为它们并不完全符合我的任何代码,有时候书籍和教程中的例子似乎有点理想化,特别是对于单独的编码器 .

    设计模式不适用于懒惰的编码器 .

  • 27

    我发现有用且写得很好的介绍性书籍是由Alan Shalloway和James Trott(Addison Wesley)撰写的Design Patterns Explained .

    alt text http://ecx.images-amazon.com/images/I/5172GGH8QHL.SL500_AA240.jpg

    不要从Gang of Four书开始,因为它不是一本入门书 .

  • 3

相关问题