设计模式:都有哪些新的,现有的在哪里使用?
Posted
技术标签:
【中文标题】设计模式:都有哪些新的,现有的在哪里使用?【英文标题】:Design patterns: what are some new ones, where are the existing ones used?设计模式:有哪些新的,现有的在哪里使用? 【发布时间】:2009-09-14 07:15:50 【问题描述】:我的一门课程的可选作业。关于这两个主题之一的 30-45 分钟演示/案例研究:
-
现实项目中当前存在的设计模式示例:它们解决了什么问题,为什么它们比其他技术更好,等等
新的设计模式,它们解决了哪些其他设计模式无法解决的问题等
请注意,“新”和“现有”是指 GoF 书籍和 the design patterns listed within。
对于第一个,源代码不是必需的,但它可能是一个加号,所以一个开源项目是最好的。
对于第二个,我基本上需要能够为每种模式提供类似于 GoF 书中的描述,并提供适当的动机、示例等。
任何人有一些好的想法/指针?
【问题讨论】:
【参考方案1】:您可以从阅读其他一些模式书籍开始:
Patterns of Enterprise Application Architecture xUnit Test Patterns Enterprise Integration Patterns Implementation Patterns Domain-Driven Design【讨论】:
虽然建议不错,但对于演示的最终目标而言,这可能有点贵。另一方面,您是否知道这些书是否同样(类似于 GoF)易于用作参考资料(模式字典)。【参考方案2】:SVN 项目是客户端/服务器模式的一个很好的例子,尽管这更像是一种架构模式而不是设计模式本身,但您可能会发现它很有用(而且它是开源的)。
看看设计文档,信息量很大的大picture。
访问者模式在 Eclipse 中被广泛使用。查看GEF/Draw2D(布局)或JDT(核心)以获取一些示例。 (同样两者都是开源的。)
实际上,如果您查看 Draw2D 或 Eclipse 的代码,您会注意到所使用的大量设计模式。工厂、复合材料、命令、备忘录(和模型-视图-控制器,但这又是架构)。只需抓住一个项目并寻找它们,在documentation 中寻找一些关于在哪里寻找的指针。
【讨论】:
【参考方案3】:您的问题中“存在哪些新设计模式”部分很难回答,因为:
GoF 书中列出的设计模式在某些语言中存在新的实现。例如,可以使用委托在 .NET 中编写观察者模式。
存在不同类型/种类的设计模式,具体取决于应用它们的层。例如“存储库模式”。 例如,这是一种不属于 GoF 书中的模式,因为它作用于比该书中列出的更高级别/层。这是在应用程序的“域层”中使用的模式。就像“规范模式”一样。
【讨论】:
【参考方案4】:有大量的设计模式 wiki 类型的网站 - 仅举几例:
WikiPedia - Software design patterns http://ajaxpatterns.org/ http://www.uidesignpatterns.org/ http://perldesignpatterns.com/就一个非常明显的模式Model-View-Controller 已在许多应用程序中使用,并且不在有关该主题的原始 GoF 书中。尽管正如 NomeN 在 cmets 中提到的,它更像是一种架构设计模式,但在有关设计模式主题的演讲中可能值得一提。
Null Object Pattern 是另一个常见的,jQuery 使用它。当您不匹配任何与它的主选择器函数匹配的对象时,将返回一个空对象(仍然具有所有正常函数)而不是“null”。
【讨论】:
像客户端-服务器这样的 MvC 和更通用的分层架构是架构模式,而不是更底层的设计模式,这就是它们没有出现在 GoF 中的原因。老师可能对差异很敏感,尽管如果 OP 在他的演示文稿中指出这一点,他可能会让它滑落。【参考方案5】:没有新的设计模式。四本书中的那些(模数)几乎是正交和完整的。还有很多其他类型的模式。
【讨论】:
【参考方案6】:只需专注于 Reactor 模式(不是在 GoF 中),您就可以轻松地填补那么多时间。有关不同实现的信息和示例,请参阅 this Wikipedia link(Twisted for Python 就是其中之一)。
【讨论】:
以上是关于设计模式:都有哪些新的,现有的在哪里使用?的主要内容,如果未能解决你的问题,请参考以下文章