本文从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(); } };
对应的类图: