我需要为学习设计模式的学生编写一些任务(问题)。 请给我一些实用的短期任务,帮助学生理解这个理论。
我需要一些有趣的创意设计模式的想法。 如果你分享了自己的经验,那就太棒了:当一个特定的设计模式非常适合你的设计时。
答案 0 :(得分:5)
我发现书中的例子“Head First Design Patterns”非常容易理解,但足以理解模式。
答案 1 :(得分:2)
我想你应该想出一些场景,并向学生询问他们将使用哪种设计模式。
例如:我们有一个表示文件的对象,并且有方法可以打开和关闭。我们希望在应用程序调用打开或关闭时可选地记录消息。
另一个例子:我们有一个响应速度非常慢的下游系统。我们想要设计一个组件来排队下游系统的请求,并在后台逐个提供它们。
答案 2 :(得分:2)
如果你能想到一个项目可能会在不同的点上使用许多模式,这些模式可以让他们学到更多东西,同时又可以教授模式。我正在考虑像一个简单的HTTP服务器,你可以在请求处理,日志记录,会话维护,所有这些东西中应用模式,所以你可以教不同的作为单独的主题,但相对较好结构化整体,提供使用您正在探索的各种模式及其互动的实践经验。
答案 3 :(得分:2)
我最近参加了一个有设计模式方面的课程(在半个学期的课程中,我们花了3-4周时间来讨论设计模式)。
我们的许多实践和课程都包括使用JHotDraw来探索模式的使用(以及如何开发框架)。 JHotDraw是结构化绘图编辑器的框架,例如有向图,或我们使用的一个例子是绘制一个orrery。为了使用JHotDraw,必须理解几种模式。 IIRC使用的创作模式至少包括抽象工厂和原型模式。
可能需要一段时间来确定JHotDraw的哪些部分适合您的课程,但Javadoc确实使它有用,识别类使用的模式等。
正如另一个答案所述,Head First Design Patterns中的例子也非常出色,我们也在课程中使用它们(荣誉年级本科水平)。
答案 4 :(得分:1)
跟进评论:
我的初衷只是建议一个问题域,你可以将整个系统的每个部分分解成更有意义的部分,学生可以清楚地看到每个模式的需要。我想到了几个不相关的任务,你可以按照这个想法完成几个更大的任务,让他们看看它们将如何一起工作。对于一个学生来说,这可能对我来说太过分了,因为我没有考虑到这一点,但这并没有真正解决你的问题。
这是一个现实生活中的例子
Sale(Integer_quantity, ICatalogItem _item, IDiscount _discount) implements ITransaction
Refund(Double _amount, IOrderNumber _orderNumer) implements ITransaction
这是因为有人决定用一个神奇的数字“-1”表示没有销售。你可以想象当人们以1美元退款时会发生什么。当然,IDiscount
是计算销售价格的策略模式。我们有一个抽象工厂对象来创建所有销售。
答案 5 :(得分:0)
使用JHotDraw进行整理
我找到了这个学术工具 - DP
Miner。
它应该是
分析系统并搜索与某些设计匹配的类
图案即可。它接受xml(xmi)
描述系统的文件(
文件可以由Rational生成
逆向工程后的罗斯
代码,我使用了Enterprize
那个建筑师)。独立的
该工具的版本可以发现
只有4个硬编码模式
工具也可以作为插件
日食。所以这个版本接受了
还有描述a的xml文件
模式并使用此描述
在系统中发现它。所以
的想法是让学生为其他模式创建xml描述
并在不同的发现他们
系统即可。
但是我花了
昨天大约5个小时试图
得到这一切...我设法
仅从独立获得结果
版本使用他们的测试说明
JHotDraw的文件(我生成了我的
使用Enterprise Architect拥有自己的xml,
但它没有结果)。
可能是以后我会成功的
为我工作,并将更新此
交。
朱迪思的“C#3.0设计模式” 主教包含所有人的练习 经典设计模式。