你是否使用设计模式?

29

设计模式在现实世界中的普及程度如何?你在日常工作中是否使用它们 - 与同事讨论如何以及在哪里应用它们 - 还是它们更多地仅是学术概念?

它们实际上为您的工作提供了实际价值吗?还是它们只是人们谈论时显得聪明的东西?

注:出于这个问题的目的,忽略像 Singleton 这样的“简单”设计模式。我谈论的是设计您的代码以便您可以利用 Model View Controller 等模式。

15个回答

1

MVC非常有名,所以我们经常使用设计模式。如果你问我是否使用《四人帮》的设计模式,是的,有几个我会用,因为其他维护者会了解这些设计,并且知道我们在代码中的目标。然而,也有一些设计模式对于我们的工作来说相对较为陌生,所以如果我使用其中之一,可能无法充分享受到使用设计模式的全部好处。

它们重要吗?是的,因为它们提供了一种快速高效、被广泛接受的软件设计交流方式。但是,你能否提供更好的定制解决方案呢?嗯,可以(或多或少)。

最初的《四人帮》设计模式是从实际生产代码中提取出来的,所以它们记录了已经在实践中使用的内容。它们并不纯粹或主要是学术性的东西。


1

我发现MVC模式非常有用,可以隔离您的模型逻辑,这样就可以轻松地重复使用或进行修改。它还有助于解耦您的类,并使单元测试更加容易。我最近写了一篇关于它的文章(是的,在这里做个无耻的广告...)

此外,我最近使用了一个工厂模式,从基类生成并返回我需要的正确DataContext类,使用LINQ

当尝试将两种不同的技术(例如在Mac上的Cocoa和Ruby)粘合在一起时,会使用桥接。

然而,我发现每当我实现一个模式时,都是因为我事先知道它。通常需要额外的思考,因为我发现我必须稍微修改原始模式以适应我的需求。

您只需要小心,不要成为架构宇航员


1

是的,设计模式在现实世界中被广泛使用 - 并且我的许多同事每天都在使用。

依我之见,设计模式提供的最大价值在于,它们为您提供了一种通用的高级语言,以便向其他程序员传达软件设计。

例如,您可以简单地说它是一个"抽象工厂",而不是描述您的新类是一个"基于某些输入标准创建多个其他类的实用程序",这样每个人都能立即理解您在谈论什么。


1

是的。

我们甚至在我目前的工作中使用它们:使用COBOL和PL/I进行主机编码。

到目前为止,我已经看到了适配器、访问者、外观、模块、观察者以及非常接近组合和迭代器的东西。由于语言的特性,大多数使用的是结构型模式。此外,我并不总是确定使用它们的人是否有意识地这样做 :D


0

我绝对使用设计模式。现在,我认为MVC是一种设计模式。我使用它们的主要原因是我足够谦虚,知道我可能不是第一个遇到特定问题的人。我很少开始编写代码时就知道要使用哪种模式;我会不断观察代码,看它是否自然地发展成现有的模式。

我也非常喜欢Martin Fowler's Patterns of Enterprise Application Architecture。当出现问题或任务时,我翻到相关章节(它主要是一本参考书),阅读一些模式的概述。一旦我更好地了解了一般问题和现有解决方案,我就能够通过他人的经验看到我的代码可能需要走的长期路径。我最终做出了更好的决策。

设计模式在我所有“未来”想法中肯定扮演着重要角色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接