Design patterns 为学习设计模式的学生提供的实践任务

Design patterns 为学习设计模式的学生提供的实践任务,design-patterns,Design Patterns,我需要为学习设计模式的学生撰写一些任务(问题)。 请给我推荐一些实用的短期任务,帮助学生理解理论 我需要一些有趣的创意设计模式的想法。 如果你能分享你的经验,那就太好了:当一个特定的设计模式完全适合你的设计时。我想你应该想出一些场景,并询问学生他们将使用哪种设计模式 例如:我们有一个对象,它表示一个文件,并有打开和关闭的方法。我们希望在应用程序调用open或close时选择性地记录消息 另一个例子:我们有一个下游系统,反应非常慢。我们希望设计一个组件,将下游系统的请求排队,并在后台逐一提供它们。

我需要为学习设计模式的学生撰写一些任务(问题)。 请给我推荐一些实用的短期任务,帮助学生理解理论

我需要一些有趣的创意设计模式的想法。
如果你能分享你的经验,那就太好了:当一个特定的设计模式完全适合你的设计时。

我想你应该想出一些场景,并询问学生他们将使用哪种设计模式

例如:我们有一个对象,它表示一个文件,并有打开和关闭的方法。我们希望在应用程序调用open或close时选择性地记录消息


另一个例子:我们有一个下游系统,反应非常慢。我们希望设计一个组件,将下游系统的请求排队,并在后台逐一提供它们。

如果您能想到一个项目,该项目可能在不同的点上使用许多模式,这可以让他们学习一些更丰富的内容,同时反过来教授模式。我在想一个简单的HTTP服务器,在那里你可以在请求处理、日志记录、会话维护等方面应用模式,因此,你可以将不同的主题作为单独的主题来教授,但要形成一个结构相对良好的整体,并提供使用你正在探索的各种模式及其交互的实际经验。

后续评论:

我的初衷只是提出一个问题域,通过这个问题域,你可以将整个系统的每个部分分解成更有意义的部分,这样学生就可以清楚地看到每个模式的需要。我想,你可以按照这个想法来完成几个更大的任务,让他们看看如何协同工作,而不是完成几个不相关的任务。这对一个学生来说可能太多了,因为我现在想起来了,它并没有真正解决你的问题

这是一个真实的例子

Sale(Integer_quantity, ICatalogItem _item, IDiscount _discount) implements ITransaction
Refund(Double _amount, IOrderNumber _orderNumer) implements ITransaction

这是因为有人决定用一个神奇的数字“-1”来表示没有销售。你可以想象当人们以1美元退款时发生了什么。当然,
idiscont
是一种计算销售价格的策略模式。我们有一个抽象的工厂对象来创建所有的销售。

我在书“非常容易理解,但足以理解模式”中找到了一些例子。

我最近参加了一个课程,其中包含了设计模式方面的内容(在半学期的课程中,我们花了3-4周的时间学习设计模式)

我们的许多实践课程和课程都包括使用来探索模式的使用(以及如何开发框架)。JHotDraw是结构化绘图编辑器的框架,例如有向图,或者我们用于绘制Orrry的示例。要使用JHotDraw,必须了解几个模式。IIRC使用的创作模式至少包括抽象工厂和原型模式

确定JHotDraw的哪些部分适合您的课程可能需要一段时间,但是Javadoc确实让它很有帮助,确定类使用的模式等等

正如在另一个答案中所述,Head-First设计模式中的示例也非常优秀,我们在课程中也使用了它们(荣誉年本科水平)

  • 在与 我找到了这个学术工具-。
    它应该 分析系统并搜索与某些设计匹配的类 模式。它接受xml(xmi) 描述系统的文件( 文件可以由Rational生成 逆向工程后的玫瑰 代码,我用过 这方面的设计师)。独立的 该工具的版本可以发现 只有4个硬编码模式。
    该工具也可以作为插件提供 日食。所以这个版本接受 还包括描述 模式,并使用此描述 在系统中发现它。所以 的想法是让学生为其他模式创建xml描述 并以不同的方式发现它们 系统
    我花了多少钱 昨天大约5个小时试图 让这一切都运作起来。。。我设法做到了 仅从单机版获取结果 使用其测试描述的版本 JHotDraw的文件(我生成了 使用企业架构师拥有xml, 但没有结果)。 也许过一会儿我会设法赶到的 为我工作,并将更新此 邮局

  • 朱迪思的“C#3.0设计模式” 主教包含了所有人的运动 经典的设计模式


  • 你的想法是在学生之间共享所有的组件/子系统吗?嗯,更确切地说,这是一个想法,把一些大的东西分解成更小的部分。我会在几次讲座中设想这一点。让我给上面加一个例子。+1上学期上了一节课,使用了本书中的一些例子。谢谢你提供的信息,好的例子总是受欢迎。+1本书很好,因为它侧重于教育学。另外,我喜欢禅宗的学习方式。模式是复杂的:它们解决的问题不平凡,它们的结构也不平凡,最后将结构应用到特定实例也不平凡。你不能指望在一个学期的课程中学好所有这些东西。感谢你提到这个开源项目——它对我真的很有帮助(尽管分析所有代码和准备任务/示例确实需要时间)。