策略模式

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

直接看一个例子:

英雄联盟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 英雄联盟回合战斗_Java策略模式:一个关于英雄联盟的例子

    片段 - 万物皆片段(可能是最好用的代码分享平台) 策略模式 将类中未来可能会变化的需求抽取为接口,而在这个类中持有那个接口的引用,编程时使用接口,而不是那个接口的实现. 直接看一个例子: 英雄联盟1 ...

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

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

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

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

  5. Java中避免if-else-if:策略模式

    本文仅仅为入门,高手勿喷. 实际工作中,我们总会遇到类似如下的需求: 某支付系统接入以下几种商户进行充值:易宝网易,快线网银,19pay手机支付,支付宝支付,骏网一卡通,由于每家充值系统的结算比例不一 ...

  6. java 23 种设计模式-23-java 策略模式(Strategy Pattern)

    目录 目录 策略模式 实际案例 定义 测试 实现方式 UML & Code UML Code 系列导航 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运 ...

  7. Java实际项目运用之策略模式

    1. 策略模式概要 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理.策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类.用一句话来说,就 ...

  8. 两种语言实现设计模式(C++和Java)(三:策略模式)

    策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异.用策略模式 ...

  9. Java设计模式(七)策略模式 模板模式

    (十三)策略模式 策略图案限定了多个封装算法,该算法可以相互替换包.法的客户.借用还有一位大神的样例. interface ICalculator{public int calculate(Strin ...

  10. Java描述设计模式(22):策略模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 每年双十一,各大电商平台会推出不同的满减策略,当用户的消费金额满一定额度后,会进行减去一定的优惠额度,从而来一波清仓甩卖,使用策 ...

最新文章

  1. mysql查看修改记录_(转)MySql中监视增删改查和查看日志记录
  2. Gradle: 警告:编码 GBK 的不可映射字符
  3. 下载ueditor-1.1.3.jar源码和源代码
  4. Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
  5. 表格如何excel在线转letex
  6. burpsuite2.0破解版使用说明
  7. vue jsonp跨域
  8. 页面提示以及页面刷新
  9. relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol may bind externally can not be used 【ARM64平台编译】
  10. 企鹅F4手机外观设计有突破 配MTK6592八核处理器
  11. 从头开始训练一个 NER 标注器
  12. 怎样在应用中实现自助报表功能?
  13. the计算机科学全球大学排名,2020THE计算机科学专业排名发布,内地60所大学入榜,清华全球15...
  14. 双系统安装deepin20_win10+deepin双系统安装方法(UEFI+GPT)
  15. mmdetection目标检测训练过程参数解读
  16. 视频教程-沐风老师3DMAX石墨烯建模视频教程-3Dmax
  17. STC89系列单片机看门狗的使用及应用程序
  18. macOS:M1 上安装 Rosetta 2
  19. NDIS笔记---(2)
  20. poj3518(Prime Grap 欧拉筛+二分)

热门文章

  1. wps多出来的页面怎么办?wps怎么删除不要的页
  2. 小说阅读网站设计HTML,HTML5+CSS3网站设计基础教程
  3. linux u盘 修复工具,怎样Linux下修复U盘驱动器
  4. 时间序列数据的正态性检验
  5. 公司计算机程序员英语怎么说,程序员英语怎么说
  6. 阿里云首席安全研究员吴翰清:我人生的两次选择
  7. win7打印机找不到USB001接口的解决方法
  8. opencv之扩展模块安装
  9. 【Code】numpy、pytorch实现全连接神经网络
  10. rabbitmq 消息确认机制ACK