代码之家  ›  专栏  ›  技术社区  ›  Chris Smith

你使用设计模式吗?

  •  27
  • Chris Smith  · 技术社区  · 16 年前

    他们真的为你的工作提供了实际价值吗?或者只是人们谈论一些听起来很聪明的事情?

    注意:对于这个问题,忽略“简单”的设计模式,如 . 我说的是设计你的代码,这样你就可以利用

    15 回复  |  直到 16 年前
        1
  •  54
  •   Derek Park    16 年前

    任何编写良好的大型程序都将使用设计模式,即使它们没有被命名或识别为设计模式。这就是设计模式,重复和重复的设计 自然地 发生如果您使用的是一个丑陋的API,您可能会发现自己实现了一个 Facade Observer Strategy .

        2
  •  10
  •   Coincoin    16 年前

    在我看来,问题是:“你 使用 “设计模式”本身就有点缺陷,因为答案普遍是肯定的。

    之前

    我个人使用模式作为沟通工具。就这样。它们不是设计解决方案,也不是最佳实践,也不是工具箱中的工具。

    不要误解我的意思,如果你是一个初学者,关于模式的书籍将向你展示如何“使用”他们的模式而不是另一个有缺陷的设计来最好地解决一个解决方案。你可能会从练习中学习。然而,你必须意识到,这并不意味着每种情况都需要相应的模式来解决。每种情况都有一个怪癖,需要你考虑其他选择,做出一个没有完美答案的艰难决定。 那是

    然而,反模式是在一个完全不同的类。你真的 希望 积极的 避免反模式。这就是为什么反模式这个名字如此有争议的原因。


    “我使用设计模式吗?”,是的!
    “我是否积极倾向于设计模式?”,否。

        3
  •  4
  •   Justin Ethier    14 年前

    对如果使用得当,设计模式可能会很棒。正如您所提到的,我现在为我的所有web项目使用模型-视图-控制器(MVC)。这是web空间中一种非常常见的模式,它使服务器端代码更加干净、组织良好。

    除此之外,以下是一些可能有用的其他模式:

    • MVVM(Model-View-ViewModel):与MVC类似的模式;用于WPF和Silverlight应用程序。

    • 组合:非常适合需要使用对象层次结构的情况。

    • Singleton:比使用globals存储真正需要单个实例的项目更优雅。正如您所提到的,这是一个简单的模式,但它确实有它的用途。

    一般来说,设计模式非常有用,但您不应该在任何地方都使用它们;正好适合您的需要。

        4
  •  3
  •   Thomas Owens    16 年前

    我试着,是的。它们确实有助于代码的可维护性和可读性。然而,也有人滥用它们,通常(从我所看到的)是通过强迫一个系统进入一个不存在的模式。

        5
  •  3
  •   Patrik Svensson Martin Ender    16 年前

    如果模式适用,我会尝试使用它们。我认为,看到开发人员仅仅为了实现设计模式而在代码中实现设计模式是一种悲哀。但是,对于正确的任务,设计模式可能非常有用和强大。

        6
  •  2
  •   Tanerax    16 年前

    我并不是说每一种设计模式都在使用,但很多都在使用。

        7
  •  2
  •   mbillard    16 年前

    我们还使用了没有文档记录但在大量设计中产生的模式。

    请注意,我们不经常使用它们。

        8
  •  2
  •   Greg Hurlman    16 年前

    是的,工厂、责任链、命令、代理、访问者和观察者等都在我每天使用的代码库中使用。就MVC而言,这个网站似乎使用得很好,开发人员在这个网站上说的好话也不多 latest podcast .

        9
  •  1
  •   Brad Barker    16 年前

        10
  •  1
  •   Dan Blair    16 年前

    它们重要吗?是的,因为它提供了一种快速、高效和普遍接受的方式来讨论软件设计的方法。你能提供更好的定制解决方案吗?是的(排序)?

    原始的GoF模式是从生产代码中提取出来的,因此它们对已经在野外使用的模式进行了编目。它们不是纯粹的,甚至不是学术性的东西。

        11
  •  1
  •   Louis Salin    16 年前

    recently (是的,无耻插在这里…)

    另外,我最近使用了基类中的工厂模式来生成并返回我需要的适当的DataContext类,使用 LINQ .

    当尝试将两种不同的技术(如 Cocoa and Ruby

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

    architecture astronaut !

        12
  •  1
  •   Vinnie    16 年前

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

    在我看来,设计模式提供的最大价值在于,它们为您提供了一种通用的高级语言,用于将软件设计传达给其他程序员。

    例如,您可以简单地说,它是一个 “抽象工厂” 每个人都能立刻明白你在说什么。

        13
  •  1
  •   baris.aydinoz    15 年前

    是的,设计模式或抽象模式是我生活的一部分,在我看的地方,我开始看到它们。因此,我被他们包围着。但是,正如你所知,缺乏知识是一件危险的事情。因此,我强烈建议你阅读GoF的书。

    设计模式的一个主要问题是,大多数开发人员都不理解设计模式,或者不相信设计模式。大多数时候,他们争论变量、循环或开关。但是,我坚信,如果您不说模式语言,您的软件不会走得很远,您将发现自己陷入维护噩梦。

    正如您所知,反模式也是一件危险的事情,当您对设计模式缺乏专业知识时,就会发生这种情况。重构反模式要困难得多。作为一本关于这个问题的推荐书,请阅读“反模式:在危机中重构软件、架构和项目”。

        14
  •  1
  •   Anders Johansen    12 年前

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

        15
  •  0
  •   Barrett Conrad    16 年前

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

    我也很喜欢 Martin Fowler's Patterns of Enterprise Application Architecture . 当一个问题或任务出现时,我会翻到相关部分(主要是一本参考书)并阅读一些模式概述。一旦我对一般问题和现有解决方案有了更好的了解,我就开始看到我的代码可能通过其他人的经验走的长期道路。我最终做出了更好的决定。

    设计模式无疑在我所有的“面向未来”理念中扮演着重要角色。