在解决问题或设计更好方面,哪些模式有用?

时间:2012-12-07 09:20:49

标签: design-patterns

我觉得像Façade,Adapter,Wrapper,Bridge等的模式描述了这些事情的完成方式。

单身人士或工厂我认为是微不足道的 - 我们大多数人会在适当的时候弄清楚自己。

MVC很有用,但它通常通过框架使用,它不经常直接使用。

那么什么样的模式对于帮助我们更好地解决问题或者做出更好的设计(通过直接使用模式)来说是非常重要和有用的呢?

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

我目前正在努力寻找访客模式,这似乎是一件非常重要的事情,并且有助于设计。


由于其他原因,了解像Singleton和MVC这样的模式当然很有用。 如果您了解Singleton设计模式,则可以更好地进行通信并以标准方式进行,以便更容易理解代码。

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

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

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

这个问题的背景是我经常看到“使用过模式”的jobspecs。 并不是说我应该从字面上做出反应,但它让我思考。我不能说我使用模式只是因为我所做的可以被称为Wrapper或Bridge,或者因为我使用Observer或MVC的GUI框架。

3 个答案:

答案 0 :(得分:2)

不要坚持使用某些模式来了解和使用。将SOLID设计原则应用于您的代码并进行重构以删除重复的代码 - 这就是所有设计模式所基于的。理解 SOLID 还可以清楚地了解每种模式解决的问题。稍后您将了解您已经在系统中应用了策略,观察者,单例和适配器,解决了一些问题或删除了重复的代码。

当你从另一边开始 - 先学习设计模式,然后就像if all you have is a hammer, everything looks like a nail。即使你真的不需要它们,你肯定会尝试应用模式。你也会经常使用错误的模式。

我结束了重构模式(好吧,在90%的情况下)。例如。我只在看到烦人的重复条件逻辑(即他们解决的问题)时创建状态或策略,而不是因为我预见到我的代码会发展,我将需要10个算法的实现。否则,您可以通过为将来添加新的无用类来使代码过度复杂化:abuse of Design Patterns in writing a Hello World program

答案 1 :(得分:0)

应用Head First Design Patterns策略学习模式。首先要了解USE和限制,然后了解实际模式。

1)工厂和抽象工厂

2)构建器

3)模板

4)空对象,但更喜欢 Google Guice Optional

5)工厂方法

是一些有助于制作简洁设计的方法

不要过早地过度使用花样。首先在原则上建立固体资金。然后所有的模式都将自然而然。

答案 2 :(得分:0)

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

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

此外,在一个给定的时间你只使用了一些模式。最好的学习方法就是尽可能多地编写不同的软件,你将学习所需的所有模式。