从王者荣耀看设计模式(简单工厂模式)

一.简介

游戏开始前,玩家可从英雄池自由挑选将要出战的英雄

二.简单工厂模式

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

  • 这其中的设计原则有:
  1. 有一个专门的类来负责创建实例的过程。具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。
  2. 简单工厂模式中包含的角色及其相应的职责如下:

    工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
    抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
    具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。

  • 简单工厂模式的优点
    用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化
  • 简单工厂模式的缺点
  1. 由于一切逻辑都集中在一个工厂类中,导致了没有很高的内聚性,同时也违背了“开放封闭原则”
  2. 简单工厂模式的方法一般都是静态的,而静态工厂方法是无法让子类继承的,因此,简单工厂模式无法形成基于基类的继承树结构。

三.结构图

四.设计类图

五.代码实现

HeroFactory(简单工厂类)根据玩家选择创建相应类的实例

package com.game.Factory;
/** 简单工厂类(提供创建接口)*/
import com.game.domain.Hero;
import com.game.domain.HouYi;
import com.game.domain.LuBanQiHao;public class HeroFactory {public static Hero createHero(String HeroName) throws Exception {//传入HouYi,工厂创建并返回HouYi实例if(HeroName.equalsIgnoreCase("HouYi")) {return new HouYi();}else if(HeroName.equalsIgnoreCase("LuBanQiHao")){//传入LuBanQiHao,工厂创建并返回LuBanQiHao实例return new LuBanQiHao();}else {throw new Exception();//抛出异常}}
}

HeroFactoryTest测试类

package com.game.test;
/** 英雄工厂测试类*/import com.game.Factory.HeroFactory;
import com.game.domain.Hero;public class HeroFactoryTest {public static void main(String [] args) {//使用工厂的创建工厂方法,传入英雄的名称,由工厂创建英雄try {//1.选择英雄后羿System.out.println("=======choose1=======");System.out.println("请选择你的英雄:");//向工厂传入英雄的名称Hero hero1 = HeroFactory.createHero("HouYi");System.out.println("您选择的英雄是【"+hero1.getHeroName()+"】");hero1.display();//2.选择英雄鲁班七号System.out.println("=======choose2========");System.out.println("请选择你的英雄:");//向工厂传入英雄的名称Hero hero2 = HeroFactory.createHero("LuBanQiHao");System.out.println("您选择的英雄是【"+hero2.getHeroName()+"】");hero2.display();}catch(Exception e) {//捕捉异常System.out.println("不存在此英雄!");}}
}

运行结果

转载于:https://www.cnblogs.com/miaowulj/p/11441577.html

从王者荣耀看设计模式(四.简单工厂模式)相关推荐

  1. 从王者荣耀看设计模式(十.外观模式)

    ##从王者荣耀看设计模式(外观模式) 一.简介 王者荣耀是由多人协同开发而成,每个人负责游戏的一个或多个子功能,一个完整的功能是由很多已开发的子功能组合成的.我们要玩游戏时,只需要打开王者荣耀APP, ...

  2. 从王者荣耀看设计模式(远程代理模式)

    从王者荣耀看设计模式(远程代理模式) 一.简介 每位王者荣耀玩家都有一个属于自己的游戏账号.为了提升游戏等级或者增加游戏体验感,会存在多个游戏玩家同时共享一个游戏账号的情况.当一位玩家使用账号正在游戏 ...

  3. 从王者荣耀看设计模式(六.状态模式)

    从王者荣耀看设计模式(状态模式) 一.简介 英雄项羽在敌方英雄的攻击下存在3种不同的状态. 1.在健康生命值下--普通状态,在每次被攻击时,当前生命值=剩余生命值-敌方英雄伤害值 2.在生命值低于某一 ...

  4. 从王者荣耀看设计模式(五.组合模式)

    从王者荣耀看设计模式(组合模式) 一.简介 在王者荣耀这款游戏中,我们可以在商店中购买英雄.英雄由法师.射手.打野等职业组合而成,其中各个职业由中国元素的英雄和外国元素的英雄组成,玩家可根据需要挑选并 ...

  5. 从王者荣耀看设计模式(一.策略模式)

    从王者荣耀看设计模式(策略模式) 一:简介 游戏开始前,玩家需要选择英雄,再根据所选择的阵容自由选择召唤师技能,游戏开始,玩家可以控制英雄进行普通攻击和使用召唤师技能攻击 二:策略模式 策略模式将可变 ...

  6. 从王者荣耀看设计模式(虚拟代理模式)

    从王者荣耀看设计模式(虚拟代理模式) 一.简介 王者荣耀游戏设置了很多种游戏模式,比如:王者模拟战.无限乱斗.梦境大乱斗.火焰山大战等.当从王者荣耀的主界面进入各类模式的界面时,由于网络原因,会存在一 ...

  7. 从王者荣耀看设计模式(十七.桥接模式)

    从王者荣耀看设计模式(桥接模式) 一.简介 王者荣耀是一款RGB游戏,玩家操控自己选择的英雄进行竞赛.在游戏正式开始前,玩家在挑选想要操作的英雄的同时,也会挑选适合该英雄的召唤师技能.召唤师技能是通用 ...

  8. 从王者荣耀看设计模式(保护代理模式)

    从王者荣耀看设计模式(保护模式) 一.简介 打开王者荣耀,点击右上角头像标志可进入我的信息主页.在我的个人主页中,我可以可设置玩家的游戏昵称,性别,常用英雄.除此之外,我还可以查看自己得到别人点赞的次 ...

  9. 从王者荣耀看设计模式(七.装饰者模式)

    ##从王者荣耀看设计模式(装饰者模式) 一.简介 王者荣耀中,角色的"伤害值"和"生命值"是很重要的概念.为了保证游戏的胜利,玩家会通过在游戏开始前配置合适的游 ...

最新文章

  1. [WTL] STLport安装指南
  2. python移植到arm_python移植到arm平台
  3. 四元数组旋转_四元数应用——顺序无关的旋转混合
  4. Oracle RMAN完全恢复案例(二)
  5. kmeans算法详解与spark实战
  6. SAP GR/IR在系统AP中收货和校验对会计业务的影响(详细)
  7. 电脑知识 如何提取图片中的文字
  8. 免费OA办公系统评测 到底哪个适合本公司?
  9. 无线点菜服务器英文怎么拼,无线点菜系统(客户端和服务器端交互)
  10. Serval Project——Android
  11. 水果店进货渠道及进货技巧,精品水果店进货方法
  12. rk3288 8080lcd时序分析和TFT-RGB接口
  13. 最简单的改变字体大小代码
  14. bcc云服务器远程,云服务器BCC操作操作手册.pdf
  15. IOS 滑动tableview,导航栏渐渐显示,搜索框显示在导航栏上
  16. oracle加入生僻字,ORACLE数据库中如何插入生僻字
  17. 【图像去噪】基于最小二乘方滤波实现图像去噪含Matlab源码
  18. 13、断开蓝牙设备连接(closeBLEConnection)
  19. Flash鼠标拖尾效果
  20. Win10安装Powerdesigner16

热门文章

  1. mac 您没有权限打开应用程序_Mac应用程序无法打开或文件损坏的解决方法
  2. 加一条平行于y轴的直线_为什么龙门式桁架机器人采用V型导向滚轮直线导轨
  3. k8s 命令 重启_k8s基本命令
  4. php中如何加密,PHP中的加密功能
  5. mysql的简单实用_MySQL的简单实用 手把手教学
  6. python 随机数_python项目实战:实现蒙特卡罗方法,求物体阴影面积
  7. python环境变量配置_Python零基础入门到年薪二十万-1.1节: 在windows中安装Python
  8. java drools5_【java规则引擎】drools6.5.0版本api简介
  9. Android XML解析器– XMLPullParser
  10. 使用Enide Studio 2014 IDE来表达JS WebApplication