0

我认为像 Façade、Adapter、Wrapper、Bridge 等模式描述了这些事情无论如何都会完成的方式。

我认为 Singleton 或 Factory 是微不足道的——我们大多数人都会在适当的时候弄清楚自己。

MVC 是有用的,但它通常通过一个框架使用,它不那么经常直接使用。

那么哪些模式在帮助我们更好地解决问题或做出更好的设计(通过直接使用模式)方面是重要且有用的?

观察者通常是盘子上的服务器,但知道它可以让你更容易想到它,而不是。

我目前正在与访问者模式作斗争,这似乎是一个不平凡的,并且有助于设计。


由于其他原因,了解像 Singleton 和 MVC 这样的模式当然很有用。如果你知道单例设计模式,你可以更好地沟通,并以标准的方式来做,这样代码更容易理解。

您还可以阅读有关它的问题,从而更好地编写代码。

同样了解 MVC 可以让你设计得更好,即使你没有使用 MVC。

上述原因不在问题范围内。

这个问题的背景是我经常看到带有"Having used Patterns"的工作规范。不是说我应该按字面意思回答,而是让我思考。我不能说我使用模式只是因为我所做的可以称为 Wrapper 或 Bridge,或者因为我使用了使用 Observer 或 MVC 的 GUI 框架。

4

3 回答 3

2

不要拘泥于某些模式来了解和使用。将SOLID设计原则应用于您的代码并进行重构以删除重复代码 - 这是所有设计模式的基础。此外,了解SOLID将使您清楚地了解每种模式解决的问题。稍后你会明白,当解决一些问题或删除重复代码时,你已经在你的系统中应用了 Strategy、Observer、Singleton 和 Adapter。

当你从另一面开始——首先学习设计模式,那么就像你只有一把锤子,一切看起来都像钉子。即使您真的不需要它们,您也肯定会尝试应用模式。你也会经常应用错误的模式。

我以重构模式结束(好吧,在 90% 的情况下)。例如,仅当我看到烦人的重复条件逻辑(即他们解决的问题)时,我才创建状态或策略而不是因为我预见我的代码会发展并且我将需要 10 种算法的实现。否则,您可能会通过添加新的无用类来使代码过于复杂:在编写 Hello World 程序时滥用设计模式

于 2012-12-07T09:29:01.937 回答
0

我认为这是学习设计模式的开发人员最常犯的错误之一:认为它们是一些需要学习的秘诀。虽然设计模式是解决某些问题的方法,但大多数时候你会发现自己在不知不觉中使用它们。

阅读和了解您可以找到的任何设计模式都是很好的,最重要的是了解它们解决了什么问题以及何时应用它们。很多模式都没有被很好地理解和错误地应用,仅仅因为它们存在并且它们可以解决问题并不意味着你必须在任何地方都使用它们。

此外,在某个特定时间,您只使用少数几种模式。最好的学习方法就是尽可能多地编写不同的软件,您将在此过程中学习所有需要的模式。

于 2012-12-07T09:34:21.460 回答
0

应用 Head First Design Patterns 策略来学习模式。先了解用途和限制,再了解实际模式。

1) 工厂和抽象工厂

2) 生成器

3) 模板

4) Null Object 但更喜欢Google GuiceOptional

5) 工厂方法

有一些对制作干净的设计很有用

不要过早过度使用模式。首先在原则上建立坚实的把握。然后所有的模式都会自然而然地出现。

于 2012-12-07T09:25:25.587 回答