片段 - 万物皆片段(可能是最好用的代码分享平台)

策略模式

将类中未来可能会变化的需求抽取为接口,而在这个类中持有那个接口的引用,编程时使用接口,而不是那个接口的实现。

直接看一个例子:

英雄联盟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策略模式:一个关于英雄联盟的例子相关推荐

  1. 策略模式java 用例_java策略模式简单用例

    运用java策略模式一个小程序 /** * */ package Strategy; import java.util.Arrays; /** * @author HuangRong * @Funti ...

  2. Java设计模式(十二) 策略模式

    策略模式介绍 策略模式定义 策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换.客户端可以自行决定使用哪种算法. 策略模式类图 策略模 ...

  3. Java设计模式之行为型:策略模式

    一.背景: 在开发中经常遇到这种情况,实现某个功能有多种算法策略,我们可以根据不同环境或者条件选择不同的算法策略来完成该功能,比如查找.排序等,一种常用方式是硬编码在一个类中,如需要提供多种查找算法, ...

  4. java策略模式案例_java策略模式典型案例

    java策略模式典型案例 java策略模式典型案例 [var1] 参考代码 : https://github.com/zhang-xiaoxiang/DesignPatterns23 没有用策略模式我 ...

  5. 英雄联盟LOL设计模式猜想——策略模式

    LOL作为现在最流行和世界上最多人玩的游戏,一直占据着各大游戏排行榜的榜首位置.有一天,我突发奇想,我自己能不能设计出LOL呢? 今天先说一下LOL所用到的模式之一--策略模式. 策略模式是LOL应该 ...

  6. java 策略模式例子_java策略模式实例解析

    1.策略模式概述: 策略模式(Strategy Pattern):定义一系列算法,将每个算法封装起来,并让它们可以相互替换.策略模式让算法独立于使用它的客户而变化,也称为政策模式.策略模式是一种行为型 ...

  7. java 英雄联盟回合战斗_如何赢得一场英雄联盟的战斗新手入门篇

    导读:如何赢得一场英雄联盟的战斗?这里面存在非常多的因素,本文是英雄联盟欧服一篇非常入门级的心得手册,新手请进来看看,高手也可以随意看看. 综述 英雄联盟不是刷钱游戏,也不是杀人游戏,更不是类似炮塔防 ...

  8. Java设计模式(学习整理)---策略模式

       1. 模式定义          把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分: 2.模式本质:  少用继承,多用组合,简单地说就是:固定不变的信 ...

  9. java 正序a~z_java 策略模式,list集合,实现id 姓名年龄正序倒序排序(如果年龄或者姓名重复,按id正序排序)...

    策略模式:1.抽象策略类,通常由一个接口或者抽象类实现. 2.具体实现类 3.环境角色类,持有一个策略类的引用,最终给客户端调用. 好了,上代码: package execrise; import j ...

最新文章

  1. 独家|OpenCV1.8 使用XML和YAML文件实现文件的输入/输出
  2. [转]RDLC报表-参数传递及主从报表
  3. 解决在Ubuntu下打开txt文件乱码的问题
  4. 2016-10-26随笔
  5. mysql主库从库在同一台服务器_MySQL数据库的主从配置(多主对一从)
  6. CUDA C编程权威指南 第七章 调整指令级原语
  7. swift3.0 coreData的基本使用,简单实现增删改查
  8. 计算机考研机试指南(九)——搜索(百鸡问题、ABC、胜利大逃亡、迷宫问题、C翻转、旋转矩阵、字符串匹配、)...
  9. Nhibernate3.3.3sp1基础搭建测试
  10. 阿里银泰集团物业预付费系统项目的设计与应用
  11. QQ、微信动态图表情包怎么制作?视频如何转GIF
  12. FFmpeg MP4文件提取音频文件
  13. 外键的约束(Mysql、PostgreSQL)
  14. 从阿里离职10天后,疯狂投简历面了4家公司,我的感受——不可名状的痛
  15. Windows API-GDI入门基础知识详解 来源: PConline.com.cn
  16. 在 RedHat、 CentOS、 Fedora 上安装 Teamviewer 9(转)
  17. node.js + express + mysql 简单运用
  18. 安防集成商的出路在哪里?
  19. HTML+css 基础语法
  20. win7无法访问服务器共享文件夹解决办法

热门文章

  1. tomcat安装运行和idea项目部署----详解
  2. Java数组原理内存图
  3. IDEA设置maven home directory时,点apply之后不起作用
  4. wap页悬浮导航及定位
  5. 多亲 Qin3 Pro 参数 多亲 Qin3 Pro怎么样值得买吗
  6. uniApp 新闻详情页语音播报,百度语音合成app端、H5端语音播报实例
  7. 基于ARM的网络视频监控开发boa+servfox
  8. 自定义springboot组件--基于模板模式对原生springboot的rabbitmq组件进行扩展
  9. 既然岁月留不住,坦然面对后半生。
  10. 矩阵小专题(矩阵快速幂+矩阵加速)