1

说到设计模式的使用,我猜有三种类型的商店。那些如果打在脸上就不会知道模式的人 - 这些人通常更喜欢 Ctrl-C / Ctrl-V 方法来重用代码。那些每天花费数小时搜索遗留代码以希望实现一种更好的模式的人——这些人通常花费更多时间重构简单程序的代码,而不是花费一百年的维护时间。最后,那些走中间道路的人会在有意义的情况下使用模式,并为最少暴露的代码编写任何首先出现的代码。

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

谢谢。

4

13 回答 13

6

那里有很多不同的“模式”系列,但是以最广泛的术语来回答你的问题......

我建议:

离线(我的最爱):

离线(流行):

  • GoF 设计模式
  • Fowler 的重构:改进现有代码的设计
于 2008-09-18T12:58:15.873 回答
4

http://www.dofactory.com/Patterns/Patterns.aspx

于 2008-09-18T12:57:28.857 回答
2

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

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

于 2008-09-18T13:01:26.023 回答
2

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

  1. 使用的语言
  2. 一个喜欢实现的目标。

设计模式可以在 C++、Java 等语言中被高估。它们隐藏了各种打字问题带来的不灵活。以下是关于以较少限制的语言“生存”的模式的链接:http: //norvig.com/design-patterns/

另一个例子是面向方面的编程,其中可能会努力以一种不是为它“设计”的语言“引入”事物。

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

语法元素也有很大的影响。您会在 C、C++(迭代器)中看到大量类似的循环,但如果您研究支持高阶函数的语言,您只会发现一些循环。

然后,您必须查看人们访问编程的方式,自下而上或自上而下,零碎增长或建立金字塔,或任何其他个人偏好

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

问候弗里德里希

于 2008-09-18T13:07:26.587 回答
1

我想我不得不推荐Refactoring: Improvement the Design of Existing Code

重构:改进现有代码的设计
(来源:2020ok.com

大量示例说明如何合理使用模式。

于 2008-09-18T12:56:10.980 回答
1

我认为最好的网络资源包含有关模式和重构的信息 - http://sourcemaking.com

于 2008-09-18T12:56:45.287 回答
1

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

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

因此,举例来说,您发现您的工作非常适合 Observer。你对你的同事说“嘿,如果我们让这个对象成为观察者,这个对象是它的主题,这将很容易做到。”

要么你的同事马上就会明白——这种模式可以节省你的时间——或者你可以教育他们,下次你提到 Observer 时,他们就会马上明白。

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

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

于 2008-09-18T13:02:23.243 回答
1

我是这个系列的忠实粉丝,并且读过他们的很多书,所以我推荐Head First Design Patterns。您可以通过 O'Reilly 的Safari Bookshelf在线阅读它,但硬拷贝也带有精美的图案海报。

于 2008-09-18T13:05:02.300 回答
1

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

顺便说一句, http://www.developer.com每月有几篇关于设计模式及其应用的文章。祝你好运!

于 2008-09-18T13:09:42.057 回答
0

定义和原始答案是设计模式中概念的起源。这本书在非常理论的层面上讨论了这个概念,而不是渗透到该领域的管理语言。他们认为设计模式只是常见习语的名称。他们列举了一些并证明了他们的立场。

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

于 2008-09-18T12:57:24.580 回答
0

设计模式很有趣,因为只有当你完全理解了适用的模式时,你才知道在哪里使用模式。诸如 Strategy、Observer、Iterator 之类的东西,经过一点练习,您就可以不用费力地使用它。如果你在 C# 中,你会一直使用迭代器(IEnumerable...),而不会将其视为一种模式。

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

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

于 2008-09-18T13:03:31.807 回答
0

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

于 2008-09-18T13:06:13.547 回答
0

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

Head First:设计模式

然后,您可以在了解全局后查看更高级的书籍(很多实际示例;-))

于 2008-09-18T13:06:56.977 回答