目录

一、项目简介

二、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

设计模式大作业动物运动会系统【多种设计模式+文档】相关推荐

  1. c语言大作业旋转,c语言大作业全-20210412035629.docx-原创力文档

    Document number:PBGCG-0857-BTDO-0089-PTT1998 Document number:PBGCG-0857-BTDO-0089-PTT1998 C语言大作业全 #i ...

  2. java swing员工工资管理系统(大作业)源码+数据库文件+文档

    java swing员工工资管理系统.身份有管理员,员工,适合新手. 技术:java,swing,mysql,jdbc. 功能:登录,员工信息管理(增删改查),部门信息管理(增删改查),员工工资设定( ...

  3. JavaWeb大作业-网上书城(源码+文档+数据库+答辩)

    该项目采用技术jsp.servlet.jdbc.以及前端框架jQuery,tomcat服务器.mysql数据库 开发工具eclipse,项目属于MVC模式,含有源码.论文.配套开发软件.软件安装教程. ...

  4. 北邮JAVA高级语言程序设计(选修课)设计模式大作业

    北邮JAVA高级语言程序设计(选修课)设计模式大作业 题目描述: 设计模式一(单子.工厂.策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统.对所有的教材类图书 实行每本一 ...

  5. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  6. HTML5期末大作业:订餐系统网站设计——绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载

    HTML5期末大作业:订餐系统网站设计--绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. ...

  7. Android大作业:备忘录系统

    Android大作业:备忘录系统 杂言: android终于结课了,最后的大作业要求做一个备忘录系统.刚拿到题目的时候意气风发立志做一个比系统自带备忘录好的APP自己用,结果做着做着发现自己实在是菜的 ...

  8. 蔬菜信息配送系统c语言编程,c语言大作业物流配送系统程序(10页)-原创力文档...

    c语言大作业物流配送系统程序 #include #include #include //日期 struct date { int year; int month; int day; }; //订单链表 ...

  9. 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署

    计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+ ...

最新文章

  1. jupyter notebook的链接密码 token查询 以及 pycharm 如何使用 jupyter notebook
  2. 【maven】javaee项目添加servlet、jsp依赖
  3. Vue CLI 3 可以使用 TypeScript 生成新工程
  4. 修改console缓存大小_更改缓存的行大小将如何影响其他参数?
  5. java map 更新_更新Map键的值java
  6. Pytorch:Dataset总结
  7. .net生成缩略图,支持等比例缩放,加水印
  8. 第四篇 NumPy基础:数组和⽮量计算
  9. Node mongoose 结尾总结
  10. Mysql 远程登陆配置
  11. Xcode9.0、Xcode9.1修改模拟器尺寸
  12. 如何找mysql8.0的rpm安装包_centos7上mysql8.0rpm方式安装
  13. 机器学习之SMOTE算法
  14. 68ES6_解构_数组操作_对象操作
  15. 无法解决Duron1G在Ubuntu下降温监控
  16. Libero_SoC_v12.2_win软件及License下载安装教程 转
  17. 郑轻oj1000-从今天开始入坑C语言
  18. 神经元树突、早期、突触及神经元标志物
  19. Git无法clone问题
  20. 【精选】JavaScript网页时钟

热门文章

  1. win10自带输入法在切换中英文的过程中,出现了输入字符所占间距变大的问题
  2. 分享一个在线代码测试
  3. 三菱电梯维修故障服务器,三菱电梯故障及维修方法大合集之一
  4. CDO.Message使用详细介绍
  5. 肯德尔距离(Kendall’s-τ)
  6. B2B企业的网络营销日常工作内容有哪些?
  7. 高强板Q460D+Q460E+Q460C+Q460B怎么选择价格以及性能
  8. 一个新开超市3天竟充值270多万,锁定2000多会员的营销方案分享
  9. java桑硅谷 day23 晨考
  10. BootStrap框架的优缺点