策略模式:
以王者荣耀的英雄选择召唤师技能为准!
条件需要:
- 1.首先需要英雄
- 2.需要召唤师技能
如何搭建策略模式
分析:如果每个英雄类直接实现召唤师技能接口会麻烦。耦合度高,英雄应该只负责它英雄,接口应该也不能直接使用的。所以需要把这个拆分出来。
搭建思想:
- 1.创建一个抽象Hero模板类。
- 2.创建一个齐天大圣英雄类
- 3.创建一个ISkill技能接口
- 4.实现ISkill召唤师技能接口的实现类,JiPao,疾跑类
详细代码:
抽象模板类Hero
package strategymode;
/*
* 英雄类,抽象类
*/
public abstract class Hero {
//英雄的名称
private String HeroName;
//英雄的召唤师技能的接口,(组合关系,需要使用时,需要传入一个具体的技能对象)
private ISkill iSkill;
//英雄的自我介绍的方式
public abstract void display();
//英雄的普通攻击的方法
public abstract void normalAttack();
//英雄的召唤师技能使用方法
public void skill() {
iSkill.useSkill();
}
//set/get
public String getHeroName() {
return HeroName;
}
public void setHeroName(String heroName) {
HeroName = heroName;
}
public ISkill getiSkill() {
return iSkill;
}
public void setiSkill(ISkill iSkill) {
this.iSkill = iSkill;
}
}
齐天大圣英雄类
package strategymode;
/*
* 英雄类,齐天大圣
*/
public class QTDS extends Hero {
//编写构造方法
public QTDS() {
super.setHeroName("齐天大圣");
}
//齐天大圣的自我介绍
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("俺老孙来也");
}
//齐天大圣的普通攻击
@Override
public void normalAttack() {
// TODO Auto-generated method stub
System.out.println("pangpangpang。。");
}
}
ISkill召唤师技能接口
package strategymode;
public interface ISkill {
/**
* 使用召唤师技能方法
*/
public abstract void useSkill();
}
ISkill召唤师技能接口实现类,疾跑JiPao
package strategymode;
/*
* 召唤师技能
*/
public class JiPao implements ISkill {
@Override
public void useSkill() {
System.out.println("疾跑,加百分之40速度持续8秒!");
}
}
最后测试类
package strategymode;
/*
* 英雄与技能的调试类
*/
public class HeroTest {
public static void main(String[] args) {
//1.选择英雄
Hero hero = new QTDS();
//2.英雄的自我介绍
System.out.println("英雄"+hero.getHeroName()+"自我介绍");
hero.display();
//3.设置英雄召唤师技能
hero.setiSkill(new KuangBao());
//4.游戏开始
System.out.println("游戏开始,请做好准备");
//5.使用英雄的普通攻击
hero.normalAttack();
//6.使用英雄的召唤师技能的方法
hero.skill();
}
}
主要步骤:
实例QTDS(齐天大圣英雄)这个类来创建Hero这个英雄模板类。
hero.display();
hero.setiSkill(new KuangBao());它就可以使用这两个方法了,这两个方法时QTDS完成了Abstract类的抽象方法
hero.setiSkill(new KuangBao()); 设置召唤师技能。Hero这个类接收ISkill召唤师技能,由于是接口,需要创建它的实现类
总结思想
齐天大圣英雄和它的召唤师技能不能分配在一起,所以分隔。齐天大圣英雄需要配置召唤师技能,所以用一个包括这两个的一个英雄类,比较抽象,不具体。它应该是继承齐天大圣英雄类,对于召唤师技能这样少得,用接口即可。
所以英雄类是抽象类,攻击方式和开场白应该也是模糊,也是抽象方法。它继承齐天大圣英雄类。
英雄类也同时包括召唤师技能这样的一个接口属性。
英雄类就把,齐天大圣英雄类和接口同时封装起来了。 后期维护方便