(  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