( 2019 秋季学期 )
课程名称
项目名称
姓名
软件设计模式
五子棋
学号
专业 软件工程 教师
蒋良卫
1
目录
一、设计要求................................................................................................................ 1
二、引言........................................................................................................................ 1
三、设计模式................................................................................................................ 2
3.1 采用的设计模式 ............................................................................................. 2
3.2 设计模式结构视图 ......................................................................................... 2
3.2.1 抽象工厂模式 ....................................................................................... 2
3.2.2 备忘录模式 ........................................................................................... 3
3.2.3 责任链模式 ........................................................................................... 3
3.2.4 单例模式 ............................................................................................... 4
3.2.5 享元模式 ............................................................................................... 4
四、系统设计................................................................................................................ 5
4.1 主题选择——抽象工厂模式 .......................................................................... 5
4.2 悔棋——备忘录模式 ...................................................................................... 6
4.3 次数限定——责任链模式 ............................................................................... 7
4.4 棋子对象——享元模式 .................................................................................. 7
4.5 唯一棋子——单例模式 .................................................................................. 9
4.6 包图 ............................................................................................................... 10
4.7 分析类图 ....................................................................................................... 11
五、系统实现.............................................................................................................. 12
5.1 部分代码辅助说明 ....................................................................................... 12
5.2 系统界面 ....................................................................................................... 13
六、总结...................................................................................................................... 16
2
一、设计要求
仿照教材上面围棋软件的设计思路,设计一款五子棋,采用至少 5 种设计模
式。
二、引言
五子棋最早源于中国古代尧帝时期,最初流行于少数民族地区,围棋就是从
那时的五子棋渐渐的演变而来的。后来在炎黄子孙的后代流行开来。五子棋棋具
虽然与围棋相同,但下法却完全不同。五子棋两人对局,轮流下棋,先将五子连
成一行者为胜。
后来,五子棋由朝鲜使臣带到朝鲜,再有日本人带到日本。而真正使五子棋
发扬光大的是日本。五子棋刚到日本,只有在王室和贵族中间玩,后来被出入皇
宫的下人偷偷的传入民间。那时,五子棋先手没禁手,后来也是日本人先知先觉
的,觉得这个玩法有弊端,就是玩到一定水平,真正有实力的高手无法展现实力。
十九世纪初,日本界内人士通过商讨,制定一系列的方案,从此五子棋中出现了
有禁手与无禁手之分。
1
三、设计模式
3.1 采用的设计模式
项目一共使用五种设计模式,分别是:抽象工厂模式、备忘录模式、职责链
模式、单例模式和享元模式。其中抽象工厂模式用于实现主题工厂的创建,给用
户提供多种主题模式供用户选择;备忘录模式用于给用户提供悔棋功能;责任链
模式给系统和用户设置不同职责,控制用户悔棋次数;单例模式用于创建唯一棋
子;享元模式用于设计五子棋的棋子类。
3.2 设计模式结构视图
3.2.1 抽象工厂模式
图 1 抽象工厂模式结构视图
2
3.2.2 备忘录模式
图 2 备忘录模式结构视图
3.2.3 责任链模式
图 3 责任链模式结构视图
3
3.2.4 单例模式
图 4 单例模式结构视图
3.2.5 享元模式
图 5 享元模式结构视图
4
四、系统设计
4.1 主题选择——抽象工厂模式
使用抽象工厂模式,设计两个主题,供用户切换。实例类图如下:
图 6 抽象工厂模式实例类图
5
4.2 悔棋——备忘录模式
使用备忘录模式,允许用户悔棋。实例类图如下:
图 7 备忘录模式实例类图
6