新的设计模式/设计策略

时间:2010-05-07 01:57:31

标签: language-agnostic design-patterns

我已经研究并实施了几年的设计模式,我很想知道。什么是一些较新的设计模式(自GOF以来)?另外,与我自己一样,接下来要研究[以软件设计的方式]?

注意:我已经使用TDD和UML一段时间了。我对新的范式转换和更新的设计模式感到好奇。

6 个答案:

答案 0 :(得分:4)

大致有无数的设计模式。设计模式就是这样:程序员用来完成任务的技巧再次出现。关于GoF模式最有用的是他们的名气。在这方面,它们已经成为一种语言 - 正是GoF希望实现的目标。

您在网络和文献中找到的许多其他模式都是“恰当”有用的技巧,而不是您与其他程序员交谈时可以使用的语言。也就是说,在过去十年左右出现了一些模式,特别是在Web开发领域。请参阅Martin Fowler patterns book中列出的模式。

答案 1 :(得分:2)

我是PCMEF (now PCBMER) framework

的热心追随者和支持者

Here's更简单概述。

有点理解企业系统是一个庞大的复杂系统,通过将一堆其他设计模式结合到PCMBER框架(演示,控制,中介,实体和资源)中,即使是最复杂的系统仍然易于使用和管理。

答案 2 :(得分:2)

我认为最新的一个特别有用的是Domain Driven Design。这不是一个模式本身,而是更多的思维模式 - 专注于域对象 - 即你建模并构建其余应用程序的东西。

我发现它赋予了我们以前都知道但却懒得处理的原则的意义 - 比如单一责任原则和关注点分离。我现在特别认真地对待这两个人。

另一个改进的方向是TDD和依赖注入。我发现有很多接口和类实现它们,我能够放下这种只能定义一次的恐惧。这并不是说它与DRY(不要重复自己)相冲突。如果它们的目的不同,可以使用具有相同属性的两个类。封装和SRP比仅定义一次属性要重要得多。

答案 3 :(得分:2)

嗯......人们提到的一切都不是设计模式。

GOF是在考虑Java的情况下隐式编写的。它很好地探索了这个空间。然而,一旦你进入其他语言,一些模式就不再需要了(Observer很少用于像支持事件的C#这样的语言),而一些新的模式会出现。抓住Pro JavaScript Design PatternsDesign Patterns In Ruby本书,看看在这些截然不同的范例中,备用图片会发生什么。

我最近的喜爱来自于依靠现代语言的功能漂移。我是nested closures的忠实粉丝,以及解决GoF所遇到的一些相同问题的功能方法(再次,请参阅Ruby书籍中的一些很好的例子)。我现在也喜欢内部domain-specific languages的概念,它可以打开一系列自己的设计模式(包括嵌套的闭包)。此外,事件聚合似乎有望在不久的将来在.Net世界中大放异彩。

其他一些大型活动已经出现但未在GoF中讨论过多 - 可能是因为它们的级别比那些人的目标更高 - 是Inversion Of Control Containers,Message Bussing,面向方面编程,模型 - 视图 - 控制器,模型 - 视图 - 展示器,模型 - 视图 - ViewModel及其同类。

顺便说一下,这些不是设计模式,但是如果你想要超越TDD,那就开始研究行为驱动开发和上下文/规范。

答案 4 :(得分:2)

我很惊讶没有人提到马丁福勒的书Patterns of Enterprise Application Architecture。这是一本出色的书,有许多模式,其中许多用于现代ORM设计(存储库,活动记录),以及许多UI层模式。强烈推荐。

答案 5 :(得分:1)

维护方面的一个巨大变化是使用DVCS。如果你不知道是哪一个或没有使用一个,我强烈建议你阅读这两个重要人物:

Mercurial(hg):https://www.mercurial-scm.org/
git:http://git-scm.com/

他们已经做了很多工作来改变通用编程环境的工作流程。我并不是真正的模式/设计,但我不认为TDD或UML在某种程度上是技术模式/设计。也许更像是围绕编程的常见做法。