java游戏服务器--简单工厂模式
/**
* 场景抽象类
* @author lizhibiao
* @date 2018/11/29 19:00
*/
public abstract class AbstractScene
{
/**
* 进入场景方法
*/
abstract public void onEnterScene();
}
/**
*
* 副本场景
*
* @author lizhibiao
* @date 2018/11/29 19:06
*/
public class CopyScene extends AbstractScene
{
/**
* 进入副本场景需要做的事情
*/
@Override
public void onEnterScene()
{
System.out.println("副本场景---开始打怪");
}
}
/**
* 帮派场景
*
* @author lizhibiao
* @date 2018/11/29 19:08
*/
public class GuildScene extends AbstractScene
{
/**
* 进入帮派场景需要做的事情
*/
@Override
public void onEnterScene()
{
System.out.println("帮派场景--执行帮派任务");
}
}
/**
* @author lizhibiao
* @date 2018/11/29 19:13
*/
public class WildScene extends AbstractScene
{
@Override
public void onEnterScene()
{
System.out.println("野外场景---河边钓鱼");
}
}
/**
* @author lizhibiao
* @date 2018/11/29 19:21
*/
public enum SceneTypeEnum
{
/**
* 副本场景
*/
COPY_SCENE,
/**
* 帮派场景
*/
GUILD_SCENE,
/**
* 野外场景
*/
WILD_SCENE
}
/**
* 创建场景工厂类
* @author lizhibiao
* @date 2018/11/29 19:14
*/
public class CreateSceneFactory
{
/**
* 根据枚举类型创建对应的场景
* @param typeEnum 枚举类型
* @return 返回场景抽象类
*/
public static AbstractScene createScene(SceneTypeEnum typeEnum)
{
AbstractScene scene = null;
switch (typeEnum)
{
case COPY_SCENE:
scene = new CopyScene();
break;
case GUILD_SCENE:
scene = new GuildScene();
break;
case WILD_SCENE:
scene = new WildScene();
break;
default:
break;
}
return scene;
}
}
/**
* 测试类
*
* @author lizhibiao
* @date 2018/11/29 19:42
*/
public class Main
{
public static void main(String[] args)
{
//创建副本场景
AbstractScene copyScene = CreateSceneFactory.createScene(SceneTypeEnum.COPY_SCENE);
//调用进入场景方法
copyScene.onEnterScene();
//创建帮派场景
AbstractScene guildScene = CreateSceneFactory.createScene(SceneTypeEnum.GUILD_SCENE);
//调用进入场景方法
guildScene.onEnterScene();
//创建野外场景
AbstractScene wildScene = CreateSceneFactory.createScene(SceneTypeEnum.WILD_SCENE);
//调用进入场景方法
wildScene.onEnterScene();
}
}
这里我们传入不同的场景枚举类型,然后创建场景工厂类会创建对应的场景,但是你会发现我们返回的是不同场景类型,接受的它却都是抽象父类AbstarctScene,哈哈,其实这就是多态了。
java游戏服务器--简单工厂模式的更多相关文章
- Java中的简单工厂模式
举两个例子以快速明白Java中的简单 工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就 ...
- Java中的简单工厂模式(转)
Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的 ...
- (1)java设计模式之简单工厂模式
一:简单工厂模式的优点 --->在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Fa ...
- 设计模式(Java语言)- 简单工厂模式
简单工厂模式有称为静态工厂模式,属于设计模式中的创建型模式.简单工厂模式通过对外提供一个静态方法来统一为类创建实例.简单工厂模式的目的是实现类与类之间解耦,其次是客户端不需要知道这个对象是如何被穿创建 ...
- Java 设计模式01 - 简单工厂模式
先要学习设计模式之前的先看看一些基础 UML类图简单说明 可以先看看我的这篇博客: UML类图简单说明,学习编程思路的必会技能 接下来才是重点,开始我们的旅程吧. 一.UML类图展示 我们要用简单工厂 ...
- Java设计模式(1)——简单工厂模式
简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 一.模式中包含的角色及其职责 1.工厂(Creator)角色 简单 ...
- Java 设计模式之 简单工厂模式(静态工厂方法模式)
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的 ...
- java设计模式之简单工厂模式
简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...
- Java面向对象_简单工厂模式
概念:由一个工厂对象决定创建出哪一种产品类的实例. public class Practice14 { public static void main(String[] args) { // TODO ...
随机推荐
- 并查集+时光倒流 || [JSOI2008]星球大战starwar || BZOJ 1015 || Luogu P1197
题面:P1197 [JSOI2008]星球大战 题解: 坑点有点多啊,加上我本来就有点头昏脑涨,一道水题写了一万年.. 并查集不支持拆开(但是可以撤销合并),只支持合并.所以把询问离线了,从最后状态到 ...
- Mongodb的聚合和管道
MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. aggregate() 方法 MongoDB中聚合的方法使用agg ...
- 【洛谷P4552】IncDec Sequence
题目大意:给定一个长度为 N 的序列,现可以进行若干次区间 +1 或区间 -1 操作,求使得序列所有的值均相同的最小操作数是多少,且最终得到的序列有多少种. 题解: 首先考虑执行区间+和区间-操作,可 ...
- ThinkPHP 模型方法 setInc() 和 setDec()
TP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 $User::where('id=5')->setInc('score', ...
- qt类表
- Python 正则表达式Ⅴ
正则表达式实例 字符匹配 字符类 特殊https://www.xuanhe.net/字符类
- 关于python-selenium-chromedriver提示
问题一:AttributeError: module 'selenium.webdriver' has no attribute 'Chromedriver' 配置selenium环境时,执行代码 f ...
- 51nod 1402 最大值(贪心)
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1402 思路:借鉴了这篇博文http://blog.csdn.n ...
- RedHat6.2系统安装ipvsadm+keepalived
一.安装IPVS 软件包下载: 链接:https://pan.baidu.com/s/1zNgPtALbdBTC1H6e0IaZPw 提取码:xm7t 1.检查内核模块,看一下ip_vs 是否被加载 ...
- jpa repostiory
JpaRepository的查询 image.png image.png Spring Data JPA框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find.findBy.re ...