策略模式

策略模式原理图

(主要的中心思想是面向接口编程,右侧接口作为英雄类的属性存在)

Demo代码实现

package celuomoshi;

public interface Iskill {
	// 召唤师技能接口展示技能
	public abstract void showSkill();
}
package celuomoshi;

public class JiPao implements Iskill{

	// 召唤师技能接口展示技能
	public void showSkill() {
		System.out.println("这是召唤师的疾跑技能");
		
	}

}
package celuomoshi;

public class KuangBao implements Iskill{

	// 召唤师技能接口展示技能
	public void showSkill() {
		System.out.println("这是召唤师的狂暴技能");
	}

}
package celuomoshi;

public abstract class Hero {
	//英雄名称
	private String heroName; 
	// 英雄召唤师技能接口(组合关系)
	private Iskill iskill;
	// 自我介绍方法
	public abstract void introduceSelf();
	// 普攻的方法
	public abstract void normalAttract();
	// 召唤师技能的使用方法
	public void skill(){
		iskill.showSkill();
	}
	
	// get/set 方法
	public String getHeroName() {
		return heroName;
	}
	public void setHeroName(String heroName) {
		this.heroName = heroName;
	}
	public Iskill getIskill() {
		return iskill;
	}
	public void setIskill(Iskill iskill) {
		this.iskill = iskill;
	}
}
package celuomoshi;

public class HouYi extends Hero {
	
	// 构造方法 设置英雄名称
	public HouYi() {
		super.setHeroName("后羿");
	}

	@Override
	public void introduceSelf() {
		System.out.println("觉醒吧,猎杀时刻");
	}

	
	public void normalAttract() {
		System.out.println("嗖!嗖!嗖!");
	}

}
package celuomoshi;

public class HeroTest {
	public static void main(String[] args) {
		// 选择英雄
		Hero hero = new HouYi();
		// 英雄自我介绍
		System.out.print("英雄: "+hero.getHeroName());
		System.out.println();
		System.out.print("自我介绍: ");
		hero.introduceSelf();
		System.out.println();
		// 设置召唤师技能
		hero.setIskill(new JiPao());
		// 游戏开始
		System.out.println("游戏开始");
		// 英雄使用普通攻击
		hero.normalAttract();
		// 英雄使用技能攻击
		hero.skill();
	}
	
}

结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值