Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 设计模式及其使用的最佳资源是什么?_Design Patterns_Resources - Fatal编程技术网

Design patterns 设计模式及其使用的最佳资源是什么?

Design patterns 设计模式及其使用的最佳资源是什么?,design-patterns,resources,Design Patterns,Resources,说到设计模式的使用,我猜有三种类型的商店。如果模式击中了他们的脸,他们就不知道了——他们通常更喜欢使用Ctrl-C/Ctrl-V方法来重用代码。那些每天花数小时搜索遗留代码,希望实现一个更伟大模式的人——他们通常花更多的时间重构简单程序的代码,而不是花在一百年的维护上。最后,那些走中间道路的人,在有意义的时候使用模式,并为最少公开的代码编码最先出现的东西 我想知道是否有人已经锁定了一种在软件开发生命周期中平衡地结合模式使用的好方法。另外,对于模式、它们的激励因素以及它们的正确使用,网络上最好的资

说到设计模式的使用,我猜有三种类型的商店。如果模式击中了他们的脸,他们就不知道了——他们通常更喜欢使用Ctrl-C/Ctrl-V方法来重用代码。那些每天花数小时搜索遗留代码,希望实现一个更伟大模式的人——他们通常花更多的时间重构简单程序的代码,而不是花在一百年的维护上。最后,那些走中间道路的人,在有意义的时候使用模式,并为最少公开的代码编码最先出现的东西

我想知道是否有人已经锁定了一种在软件开发生命周期中平衡地结合模式使用的好方法。另外,对于模式、它们的激励因素以及它们的正确使用,网络上最好的资源是什么


谢谢。

我想我应该推荐重构:改进现有代码的设计

资料来源:


关于如何合理使用模式,有很多例子。

我想我必须推荐重构:改进现有代码的设计

资料来源:


大量关于如何合理使用模式的示例。

我认为包含关于模式和重构信息的最佳web资源-

我认为包含关于模式和重构信息的最佳web资源-

定义和原始答案是概念的起源,例如。这本书在理论层面上讨论了这个概念,而不是渗透到这个领域的管理话语。他们的观点是,设计模式只是普通习惯用法的名称;他们列举了一些例子并证明了他们的立场


他们避免了我应该使用什么样的设计模式这类问题,而不是像我自然而然地进入一个众所周知的领域那样处理问题?如果是的话,其他人的经验能帮助我吗?。对我来说,设计模式不像是将预制组件粘在一起形成解决方案。它们只是当你遇到与其他人所反驳的情况类似的情况时的指导知识库,并给出名称,以便人们在对话中参考一般情况。

定义和原始答案是这个概念的起源。这本书在理论层面上讨论了这个概念,而不是渗透到这个领域的管理话语。他们的观点是,设计模式只是普通习惯用法的名称;他们列举了一些例子并证明了他们的立场


他们避免了我应该使用什么样的设计模式这类问题,而不是像我自然而然地进入一个众所周知的领域那样处理问题?如果是的话,其他人的经验能帮助我吗?。对我来说,设计模式不像是将预制组件粘在一起形成解决方案。它们只是当你遇到与其他人所反驳的情况类似的情况时的指导库,并给出名称,以便人们在谈话中参考一般情况。

有许多不同的“模式”家庭,但将你的问题作为最广泛的术语

我建议:

吉姆·科普连的 山坡群 Kevlin Henney's有很多优秀的链接和论文 离线我的最爱:

福勒氏 羽毛的 离线流行:

GoF设计模式 Fowler的重构:改进现有代码的设计
有很多不同的“模式”家庭,但以最广泛的术语来回答你的问题

我建议:

吉姆·科普连的 山坡群 Kevlin Henney's有很多优秀的链接和论文 离线我的最爱:

福勒氏 羽毛的 离线流行:

GoF设计模式 Fowler的重构:改进现有代码的设计
模式的良好使用依赖于知识和经验;这是没有公式的。一个好办法是让有经验的人明智地应用模式,定期检查团队中其他人的代码,以确保他们没有过度使用或未充分使用设计模式。它们不是预先准备好的食谱——它们需要有效应用的技能,这是必须学习的


我对设计模式的第一次也是最好的接触是。

模式的良好使用取决于知识和经验;这是没有公式的。一个好办法是让有经验的人明智地应用模式,定期检查团队中其他人的代码,以确保他们没有过度使用或未充分使用设计模式。它们不是预先准备好的食谱——它们需要有效应用的技能,这是必须学习的


我对设计模式的第一次也是最好的接触是。

每个人都一直在使用模式。他们可能不知道。甚至像“迭代列表”这样的简单事情也是一种模式

我认为将模式融入工作周期的最好方法就是使用它们,然后 在讨论它们和评论代码时按名称引用它们。希望这将导致知识的传播

比如说,你发现你所做的非常适合观察者。你对你的同事说,嘿,如果我们让这个物体成为观察者,这个物体成为主体,这将很容易做到

要么你的同事会马上明白——这可以节省你的时间——要么你去教育他们,下次你提到“观察者”时,他们会马上明白

同时,你在传播知识,他们会发现机会来使用他们从你那里学到的新模式。这当然是双向的。下次可能是他们教你一种新模式


所有这一切都依赖于你的同事不是那种点头并假装理解某事的人。你需要他们说,嘿,你提到了Observer,我不知道那是什么。

每个人都在使用模式。他们可能不知道。甚至像“迭代列表”这样的简单事情也是一种模式

我认为将模式整合到工作周期中的最好方法就是使用它们,并在讨论它们和注释代码时按名称引用它们。希望这将导致知识的传播

比如说,你发现你所做的非常适合观察者。你对你的同事说,嘿,如果我们让这个物体成为观察者,这个物体成为主体,这将很容易做到

要么你的同事会马上明白——这可以节省你的时间——要么你去教育他们,下次你提到“观察者”时,他们会马上明白

同时,你在传播知识,他们会发现机会来使用他们从你那里学到的新模式。这当然是双向的。下次可能是他们教你一种新模式


所有这一切都依赖于你的同事不是那种点头并假装理解某事的人。你确实需要他们说,嘿,你提到了Observer,我不知道那是什么。

设计模式很有趣,因为只有当你完全理解适用的模式时,你才知道在哪里使用模式。像策略、观察者、迭代器之类的东西,只要稍加练习,就可以不用想太多就可以使用。如果你使用C语言,你会一直使用迭代器IEnumerable。。。不把它当作一种模式

在我看来,这些简单的模式是最好的模式。你已经有一项工作要做了,当你的问题不太合适的时候,试图把它塞进一个又一个的模式是浪费你的时间,并且会导致糟糕的代码


我的建议是查看一个模式的uml图,如果它相当简单,那么试着把它学习得足够好,以便以后可以回忆起来。契约更简单的模式可能更有用。

设计模式很有趣,因为只有在完全理解适用的模式时,您才知道在哪里使用模式。像策略、观察者、迭代器之类的东西,只要稍加练习,就可以不用想太多就可以使用。如果你使用C语言,你会一直使用迭代器IEnumerable。。。不把它当作一种模式

在我看来,这些简单的模式是最好的模式。你已经有一项工作要做了,当你的问题不太合适的时候,试图把它塞进一个又一个的模式是浪费你的时间,并且会导致糟糕的代码


我的建议是查看一个模式的uml图,如果它相当简单,那么试着把它学习得足够好,以便以后可以回忆起来。合同更简单的模式可能更有用。

我是这个系列的忠实粉丝,读过他们的很多书,所以我推荐。你可以通过O'Reilly's在线阅读,但纸质版也有一张很棒的图案海报

我是这个系列的超级粉丝,读过他们的很多书,所以我推荐。你可以通过O'Reilly's在线阅读,但纸质版也有一张很棒的图案海报

我会自己去看《四人帮设计模式》一书

我会自己去看《四人帮设计模式》一书

我同意这些参考资料,但对新手不友好。要快速开始学习设计模式,请使用简单的方法:


然后,你可以检查更先进的书籍,一旦你得到了大局,许多实际的例子-

我同意这些推荐信,但对新手并不友好。要快速开始学习设计模式,请使用简单的方法:


然后,你可以检查更先进的书籍,一旦你得到了大局,许多实际的例子-

图案的使用在很大程度上取决于

使用的语言 一个人想要达到的目标。 在C++、java等语言中,设计模式可以被高估。他们藏起来了 各种类型的键入问题都会导致e不灵活。这里有一个链接,说明什么模式在限制较少的语言中仍然存在:

另一个例子是面向方面的编程,在这种编程中,我们尽可能地用一种不是为它设计的语言来引入一些东西

所用工具背后的理念也有很大的影响。比较一下Smalltalk、Common Lisp、Haskell等中的普通PHP或Visual Basic程序和解决方案

语法元素也有很大的影响。你会看到很多类似的循环,比如C,C++迭代器,但是如果你查看支持高阶函数的语言,你会发现一些循环。p> 然后,您必须了解人们访问编程的方式,自下而上或自上而下,逐段增长或构建金字塔,或任何其他个人偏好

我建议阅读上面提到的链接,然后检查不同语言的实现

问候
弗里德里希

模式的使用在很大程度上取决于

使用的语言 一个人想要达到的目标。 在C++、java等语言中,设计模式可以被高估。他们隐藏了各种类型的打字问题所带来的僵化。这里有一个链接,说明什么模式在限制较少的语言中仍然存在:

另一个例子是面向方面的编程,在这种编程中,我们尽可能地用一种不是为它设计的语言来引入一些东西

所用工具背后的理念也有很大的影响。比较一下Smalltalk、Common Lisp、Haskell等中的普通PHP或Visual Basic程序和解决方案

语法元素也有很大的影响。你会看到很多类似的循环,比如C,C++迭代器,但是如果你查看支持高阶函数的语言,你会发现一些循环。p> 然后,您必须了解人们访问编程的方式,自下而上或自上而下,逐段增长或构建金字塔,或任何其他个人偏好

我建议阅读上面提到的链接,然后检查不同语言的实现

问候
弗里德里希

我非常同意上面的评论。我使用设计模式时,我可以但始终依赖团队的其他成员来真正理解特定模式的好处。否则,您将得到丑陋的代码和一个轻量级的包装器,该包装器有点类似于该模式


作为旁白,每个月都会有几篇关于设计模式及其应用的文章。祝你好运

我非常同意上面的评论。我使用设计模式时,我可以但始终依赖团队的其他成员来真正理解特定模式的好处。否则,您将得到丑陋的代码和一个轻量级的包装器,该包装器有点类似于该模式


作为旁白,每个月都会有几篇关于设计模式及其应用的文章。祝你好运

如果您为每个答案请求一个资源,这会更好。然后通过投票对答案进行适当排序,选出最佳答案。所以问题就是这样的,最好是每个答案只问一个资源。然后通过投票对答案进行适当排序,选出最佳答案。所以问题就是这样的。这个网站详细介绍了GoF书中列出的模式。虽然这是关于模式的最广为人知的一本书,但一般认为它没有为软件质量或模式运动提供服务。本网站详细介绍了GoF书中列出的模式。虽然这是关于模式的最广为人知的一本书,但一般认为它没有为软件质量或模式运动提供服务。本网站详细介绍了GoF书中列出的模式。虽然这是关于模式的最广为人知的一本书,但一般认为它没有为软件质量或模式运动提供服务。@SebRose您的评论似乎不赞成GoF的书,对此我既不同意也不反对。但你在答案中列出了GoF书。你能澄清一下你对它的看法吗?@logic.town我把GoF列为一种资源,因为它很有影响力和知名度。根据我的经验,模式通常被视为一件“好事”,对上下文的引用不足。这本书在某种程度上促成了它们的误用。然而,这本书写得很好,清楚地描述了模式,并且描述了适用的和产生的上下文。这个网站详细介绍了GoF书中列出的模式。虽然这是关于模式的最广为人知的一本书,但一般认为它没有为软件质量或模式运动提供服务。@SebRose您的评论似乎不赞成GoF的书,对此我既不同意也不反对。但你在答案中列出了GoF书。你能澄清一下你对它的看法吗?@logic.town我把GoF列为一种资源,因为它很有影响力和知名度。以我的经验,p 模式通常被视为一件“好事”,对上下文的引用不足。这本书在某种程度上促成了它们的误用。然而,这本书写得很好,清楚地描述了模式,并且描述了适用的和产生的上下文。