本文从HeadFirst阅读后记录:
以下文件在同一目录下,采用策略模式:
character.java:
public abstract class character{
weaponBehavior weapon_;
public void fight(){
weapon_.useWeapon();
}
public void setWeapon(weaponBehavior w){
this.weapon_=w;
}
}
weaponBehavior.java
public interface weaponBehavior{
public void useWeapon();
}
knifeBehavior.java
public class knifeBehavior implements weaponBehavior{
public void useWeapon(){
System.out.println("this is a knife");
}
}
bowAndArrowBehavior.java
public class bowAndArrowBehavior implements weaponBehavior{
public void useWeapon(){
System.out.println("this is a BowAndArrow");
}
}
axeBehavior.java
public class axeBehavior implements weaponBehavior{
public void useWeapon(){
System.out.println("this is a Axe");
}
}
swordBehavior.java
public class swordBehavior implements weaponBehavior{
public void useWeapon(){
System.out.println("this is a Sword");
}
}
queen.java
public class queen extends character{
public queen(){
weapon_=new knifeBehavior();
}
};
weapon.java
import java.io.*;
public class weapon {
public static void main(String[] args){
queen q=new queen();
q.setWeapon(new bowAndArrowBehavior());
q.fight();
}
};
对应的类图:

浙公网安备 33010602011771号