java 英雄联盟回合战斗_Java策略模式:一个关于英雄联盟的例子
片段 - 万物皆片段(可能是最好用的代码分享平台)
策略模式
将类中未来可能会变化的需求抽取为接口,而在这个类中持有那个接口的引用,编程时使用接口,而不是那个接口的实现。
直接看一个例子:
英雄联盟1.0版本只有一个英雄。如下
Skil.java
//技能公共接口,需要添加新的技能的时候,就添加他的实现类
public interface Skill {
//放技能
void dischargeSkill();
}
SkillHuiMieSheJi.java
//技能接口实现类:毁灭射击
public class SkillHuiMieSheJi implements Skill{
public void dischargeSkill() {
System.out.println("毁灭射击!");
}
}
Hero.java
//英雄类
public class Hero {
//持有技能的公共接口的引用
private Skill skill;
//英雄名字
private String name;
Hero(String name){
this.name = name;
}
//设置技能
public void setSkill(Skill skill){
this.skill = skill;
}
//大招
public void R() {
//说出名字
System.out.println("我是"+name);
//施放技能的地方调用这个公共接口
skill.dischargeSkill();
}
}
StrategyDemo.java
//主类
public class StrategyDemo {
public static void main(String[] args) {
//创建英雄
Hero guanghui = new Hero("光辉女郎");
//为不同的英雄设置不同的技能
guanghui.setSkill(new SkillHuiMieSheJi());
//施放大招
guanghui.R();
}
}
1.0 只有光辉可以玩。
一个月后,有了新需求:添加新英雄,一个英雄玩起来太无聊了~
现在,因为是策略模式写的,修改非常方便,有新的需求了,不用怕。
我们新添加一个技能的实现类就好了~
SkillYeManChongZhuang.java
//技能接口实现类:野蛮冲撞
public class SkillYeManChongZhuang implements Skill{
public void dischargeSkill() {
System.out.println("野蛮冲撞!");
}
}
主类也要做点修改
StrategyDemo.java
//主类
public class StrategyDemo {
public static void main(String[] args) {
//创建英雄
Hero guanghui = new Hero("光辉女郎");
Hero shitou = new Hero("熔岩巨兽");
//为不同的英雄设置不同的技能
guanghui.setSkill(new SkillHuiMieSheJi());
shitou.setSkill(new SkillYeManChongZhuang());
//施放大招
guanghui.R();
shitou.R();
}
}
这样是不是非常好的就解决了这个问题~
这就是策略模式。将会变化的地方改为公共接口,需要使用到的类持有它的引用,在增加需求的时候,添加一个接口的实现类就好了。
java 英雄联盟回合战斗_Java策略模式:一个关于英雄联盟的例子相关推荐
- 策略模式java 用例_java策略模式简单用例
运用java策略模式一个小程序 /** * */ package Strategy; import java.util.Arrays; /** * @author HuangRong * @Funti ...
- Java设计模式(十二) 策略模式
策略模式介绍 策略模式定义 策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换.客户端可以自行决定使用哪种算法. 策略模式类图 策略模 ...
- Java设计模式之行为型:策略模式
一.背景: 在开发中经常遇到这种情况,实现某个功能有多种算法策略,我们可以根据不同环境或者条件选择不同的算法策略来完成该功能,比如查找.排序等,一种常用方式是硬编码在一个类中,如需要提供多种查找算法, ...
- java策略模式案例_java策略模式典型案例
java策略模式典型案例 java策略模式典型案例 [var1] 参考代码 : https://github.com/zhang-xiaoxiang/DesignPatterns23 没有用策略模式我 ...
- 英雄联盟LOL设计模式猜想——策略模式
LOL作为现在最流行和世界上最多人玩的游戏,一直占据着各大游戏排行榜的榜首位置.有一天,我突发奇想,我自己能不能设计出LOL呢? 今天先说一下LOL所用到的模式之一--策略模式. 策略模式是LOL应该 ...
- java 策略模式例子_java策略模式实例解析
1.策略模式概述: 策略模式(Strategy Pattern):定义一系列算法,将每个算法封装起来,并让它们可以相互替换.策略模式让算法独立于使用它的客户而变化,也称为政策模式.策略模式是一种行为型 ...
- java 英雄联盟回合战斗_如何赢得一场英雄联盟的战斗新手入门篇
导读:如何赢得一场英雄联盟的战斗?这里面存在非常多的因素,本文是英雄联盟欧服一篇非常入门级的心得手册,新手请进来看看,高手也可以随意看看. 综述 英雄联盟不是刷钱游戏,也不是杀人游戏,更不是类似炮塔防 ...
- Java设计模式(学习整理)---策略模式
1. 模式定义 把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分: 2.模式本质: 少用继承,多用组合,简单地说就是:固定不变的信 ...
- java 正序a~z_java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)...
策略模式:1.抽象策略类,通常由一个接口或者抽象类实现. 2.具体实现类 3.环境角色类,持有一个策略类的引用,最终给客户端调用. 好了,上代码: package execrise; import j ...
最新文章
- 独家|OpenCV1.8 使用XML和YAML文件实现文件的输入/输出
- [转]RDLC报表-参数传递及主从报表
- 解决在Ubuntu下打开txt文件乱码的问题
- 2016-10-26随笔
- mysql主库从库在同一台服务器_MySQL数据库的主从配置(多主对一从)
- CUDA C编程权威指南 第七章 调整指令级原语
- swift3.0 coreData的基本使用,简单实现增删改查
- 计算机考研机试指南(九)——搜索(百鸡问题、ABC、胜利大逃亡、迷宫问题、C翻转、旋转矩阵、字符串匹配、)...
- Nhibernate3.3.3sp1基础搭建测试
- 阿里银泰集团物业预付费系统项目的设计与应用
- QQ、微信动态图表情包怎么制作?视频如何转GIF
- FFmpeg MP4文件提取音频文件
- 外键的约束(Mysql、PostgreSQL)
- 从阿里离职10天后,疯狂投简历面了4家公司,我的感受——不可名状的痛
- Windows API-GDI入门基础知识详解 来源: PConline.com.cn
- 在 RedHat、 CentOS、 Fedora 上安装 Teamviewer 9(转)
- node.js + express + mysql 简单运用
- 安防集成商的出路在哪里?
- HTML+css 基础语法
- win7无法访问服务器共享文件夹解决办法