java 设计模式 策略模式

    策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。

—具体策略角色:包装了相关的算法和行为。

—环境角色:持有一个策略类的引用,最终给客户端调用。

定义一个Hero对象,他有一个攻击的方法;比如用qwer技能来攻击,同一时刻只能使用一个技能攻击:

public class Hero {

	private String name;
	private Skill skill;
	public Hero() {
		super();
	}
	public Hero(String name, Skill skill) {
		this.name = name;
		this.skill = skill;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Skill getSkill() {
		return skill;
	}
	public void setSkill(Skill skill) {
		this.skill = skill;
	}
	
	public void hit(){
		skill.hit();
	}
	
}

/** 
* @ClassName: Skill 
* @Description: 技能接口,技能的具体攻击方式,(算法)
*/
public interface Skill {
	public void hit();
}

public class e implements Skill{

	@Override
	public void hit() {
		// TODO Auto-generated method stub
		System.out.println("e技能攻击");
	}

}

test一下

public class Test {
	public static void main(String[] args) {
		Hero hero = new Hero();
		Skill qSkill = new q();
		hero.setSkill(qSkill);	
		hero.hit();
	
	}
	
}

结果为

q技能攻击

  策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

就好像把技能的具体实现封装起来,让他们可以替换而不影响他的使用者(hero)


他与普通的用switch和case相比,便于添加,比如新增一个技能,这里只有添加一个技能类继承Skill就可以了

你可能感兴趣的:(java,设计模式,策略模式)