目录
一、项目简介
二、Design Pattern 汇总表
三、设计模式详述
3.1 Abstract Factory
3.1.1 AbstractFactoryTest 实现 API
3.1.2 UML类图
3.1.3 相关函数及其作用
3.2 其余模式详见文档
四、系统实现效果
源代码
注:本系统并非31个单个系统,而是一整个大的系统中包含了31种设计模式。
一、项目简介
《动物运动会》是由我们小组设计的一套动物运动会题材的体验类动物运动会 API,用户可以扮演一个动物运动会的参赛小动物,在设定的大厅和比赛里进行游戏。
玩家可以选择所使用动物的种族和颜色等特征,随后即可参加动物运动会;
动物可以在大厅选择将要进行的动作,包括参加比赛,进入饮品台,打印成绩单,购买装备,粉丝见面会和询问其他动物成绩;
参加比赛,系统会根据你所选择的动物运动员种族,获取相应的能力参数,根据你的动物运动员的状态获取状态参数,通过成绩计算函数获取相应的比赛成绩,并与其他 7 名系统生成的小动物竞赛,得到你在本场比赛中的成绩和名次。
进入饮品台,可以选择想要的饮品,包括:coffee,cola,mineral water,对于每个饮品可以选择添加配料,包括:milk,lemon,sugar,在添加配料的过程中可以进行 redo 操作,也可以进行 undo 操作,结束饮品选择后要进行付款操作,在付款过程中要对不同种族的货币按一定比率进行兑换,从而成功完成付款操作。不同的饮品可以为该动物带来不同的属性加成和状态恢复,帮助动物在运动会中取得更好的成绩;
选择打印成绩单,可以查看你所选择的动物在当前已完成的所有比赛项目的成绩,并为你选择的动物打印出相应的成绩单,以获得动物在本次运动会上的具体表现;
进入装备购买界面中,你可以为自己的动物选择心仪的运动装备,包括:运动跑鞋和运动护腕,不同的运动装备对小动物的属性值有不同程度的加成。为了使运动装备的选择能对小动物的不同属性的加成有所区分,提高游戏可玩性和合理性,对于每一个小动物,只可以选择一种运动装备。合理选择运动装备,可以使你的小动物在运动会相应类型的项目中取得更好的成绩。
选择开始粉丝见面会时,你可以选择接见某一种族的粉丝,系统会根据你所选择的种族,从粉丝中随机抽取一个幸运粉丝和你见面。这也契合了现实生活中运动会上运动员有可能随机会见粉丝的场景。
选择查询其他动物成绩,可以选择你要询问的动物对象,并选择你想要知道的该动物具体某一项运动的成绩,该动物将如实告知你他的成绩,以便你判断你的动物在本次运动会的项目中与其他小动物的差距;
总而言之,《动物运动会》具有很强的可操作性与参与度,是一套经典的赛事体验类游戏 API。
二、Design Pattern 汇总表
| 编号 | Design Pattern Name | 实现个(套)数 | sample programs 个数 | 备注 |
|---|---|---|---|---|
| 1 | Abstract Factory | 1 | 1 | |
| 2 | Adapter | 1 | 1 | |
| 3 | Bridge | 1 | 1 | |
| 4 | Builder | 1 | 1 | |
| 5 | Chain of Responsibility | 1 | 1 | |
| 6 | Command | 1 | 1 | |
| 7 | Composite | 1 | 1 | |
| 8 | Decorator | 1 | 1 | |
| 9 | Facade | 1 | 1 | |
| 10 | Factory Method | 2 | 2 | |
| 11 | Flyweight | 1 | 1 | |
| 12 | Interpreter | 1 | 1 | |
| 13 | Iterator | 1 | 1 | |
| 14 | Mediator | 1 | 1 | |
| 15 | Memento | 1 | 1 | |
| 16 | Observer | 1 | 1 | |
| 17 | Prototype | 1 | 1 | |
| 18 | Proxy | 1 | 1 | |
| 19 | Singleton | 6 | 6 | |
| 20 | State | 1 | 1 | |
| 21 | Strategy | 1 | 1 | |
| 22 | Template Method | 3 | 3 | |
| 23 | Visitor | 1 | 1 | |
| 24 | MVC | 1 | 1 | |
| 25 | Servant | 1 | 1 | |
| 26 | Null Object | 1 | 1 | |
| 27 | Simple Factory | 1 | 1 | |
| 28 | Transfer Object | 1 | 1 | |
| 29 | Filter | 1 | 1 | |
| 30 | Intercepting Filter | 1 | 1 | |
| 31 | DAO | 1 | 1 | |
| 32 | Composite Entity | 1 | 1 | |
| 33 | Front Controller | 1 | 1 | |
| 34 | Composite Entity | 1 | 1 | |
| 35 | Lazy initialization | 1 | 1 | |
| 总计 | 总计 | 31 | 31 |
三、设计模式详述
3.1 Abstract Factory
设计模式简述
抽象工厂模式即以同一界面创建一整族相关或相依的 objects,不需点名各对象真正所属的具体类。为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
使用抽象工厂的条件:
系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。
系统一次只可能消费其中某一族产品,即同族的产品一起使用。
优点:
可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理。
当增加一个新的产品族时不需要修改原代码,满足开闭原则。
3.1.1 AbstractFactoryTest 实现 API
API 描述
从逻辑上来讲,裁判的种族和裁判所管理的比赛类型都属于裁判这个角色本身的属性,只是二者所表示的属性内容和其作用不同,将他们共同的特点——裁判属性抽象成父类,并在父类中将裁判的种族和所管理的比赛类型也抽象化。如此一来,可以在具体的裁判工厂中指定裁判的种族以及所管理的比赛类型,同时用户可以方便的切换工厂,以生成不同类型的裁判满足不同比赛的需求。
在该 API 中,可以为不同比赛生成出不同类型的裁判,并将裁判以所管理的比赛类型加入到对应裁判队列中,方便管理,在需要比赛需要调用裁判时,则将相应的裁判取出使用。从用户角度来看,我们直接为已经确定的比赛生成对应的裁判,符合真实场景中远动员不可以自由选择裁判的场景,也有利于管理和用户操作体验。
该 API 满足开放闭守原则,如果动物运动会打算为一百米短跑额外添加一个小熊猫的 100 米熊猫裁判工厂,只需构建 PR100Factory,在工厂中生成一百米短跑的裁判员小熊猫,并在生成裁判的过程中,由用户自由调用 100 米熊猫裁判工厂,不需要修改工厂的内部实现也不需要增加额外的接口,并且一切选择权交由用户自己决定。
3.1.2 UML类图
3.1.3 相关函数及其作用
| 函数名 | 作用 |
|---|---|
| public abstract Race CreateRace() | 作为抽象工厂的接口函数。JudgeIngredientFactory 基类中的方法,开放给用户的接口,内部首先生成裁判的种族,之后加入裁判种族队列中,具体的裁判种族在具体的产品工厂中提供。 |
| public abstract GameType CreateType(); | 作为抽象工厂的接口函数。JudgeIngredientFactory 基类中的方法,开放给用户的接口,内部首先生成裁判所管理的比赛类型,之后加入裁判所管理比赛队列中,具体的裁判所管理的比赛在具体的产品工厂中提供。 |
由于设计模式太多,以下所有设计模式的格式如3.1所示,具体详细描述和UML类图,请详见文档(文档在代码压缩包内)。
3.2 其余模式详见文档
四、系统实现效果
在eclipse种导入代码后,直接运行main.java,会在控制台输出系统内容,按照提示的步骤在控制台输入相应的数字,回车便可运行相关步骤。
系统功能众多,就不一一演示了,你可以下载源码亲自操作,博主亲测,所有功能均能实现,
祝你设计模式期末成绩拿满分。
源代码
设计模式大作业动物运动会系统【多种设计模式+文档】.zip-Java文档类资源-CSDN下载本系统并非31个单个系统,而是一整个大的系统中包含了31种设计模式。系统设计过程、设计模式介绍、U更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/vx1271487114/85810036?spm=1001.2014.3001.5503



