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 英雄联盟回合战斗_Java策略模式:一个关于英雄联盟的例子
片段 - 万物皆片段(可能是最好用的代码分享平台) 策略模式 将类中未来可能会变化的需求抽取为接口,而在这个类中持有那个接口的引用,编程时使用接口,而不是那个接口的实现. 直接看一个例子: 英雄联盟1 ...
- java策略模式案例_java策略模式典型案例
java策略模式典型案例 java策略模式典型案例 [var1] 参考代码 : https://github.com/zhang-xiaoxiang/DesignPatterns23 没有用策略模式我 ...
- java 策略模式例子_java策略模式实例解析
1.策略模式概述: 策略模式(Strategy Pattern):定义一系列算法,将每个算法封装起来,并让它们可以相互替换.策略模式让算法独立于使用它的客户而变化,也称为政策模式.策略模式是一种行为型 ...
- Java中避免if-else-if:策略模式
本文仅仅为入门,高手勿喷. 实际工作中,我们总会遇到类似如下的需求: 某支付系统接入以下几种商户进行充值:易宝网易,快线网银,19pay手机支付,支付宝支付,骏网一卡通,由于每家充值系统的结算比例不一 ...
- java 23 种设计模式-23-java 策略模式(Strategy Pattern)
目录 目录 策略模式 实际案例 定义 测试 实现方式 UML & Code UML Code 系列导航 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运 ...
- Java实际项目运用之策略模式
1. 策略模式概要 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理.策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类.用一句话来说,就 ...
- 两种语言实现设计模式(C++和Java)(三:策略模式)
策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异.用策略模式 ...
- Java设计模式(七)策略模式 模板模式
(十三)策略模式 策略图案限定了多个封装算法,该算法可以相互替换包.法的客户.借用还有一位大神的样例. interface ICalculator{public int calculate(Strin ...
- Java描述设计模式(22):策略模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 每年双十一,各大电商平台会推出不同的满减策略,当用户的消费金额满一定额度后,会进行减去一定的优惠额度,从而来一波清仓甩卖,使用策 ...
最新文章
- mysql查看修改记录_(转)MySql中监视增删改查和查看日志记录
- Gradle: 警告:编码 GBK 的不可映射字符
- 下载ueditor-1.1.3.jar源码和源代码
- Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
- 表格如何excel在线转letex
- burpsuite2.0破解版使用说明
- vue jsonp跨域
- 页面提示以及页面刷新
- relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol may bind externally can not be used 【ARM64平台编译】
- 企鹅F4手机外观设计有突破 配MTK6592八核处理器
- 从头开始训练一个 NER 标注器
- 怎样在应用中实现自助报表功能?
- the计算机科学全球大学排名,2020THE计算机科学专业排名发布,内地60所大学入榜,清华全球15...
- 双系统安装deepin20_win10+deepin双系统安装方法(UEFI+GPT)
- mmdetection目标检测训练过程参数解读
- 视频教程-沐风老师3DMAX石墨烯建模视频教程-3Dmax
- STC89系列单片机看门狗的使用及应用程序
- macOS:M1 上安装 Rosetta 2
- NDIS笔记---(2)
- poj3518(Prime Grap 欧拉筛+二分)