设计模式实验1策略模式.doc

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程:设计模式实验学期:2010-2011学年第一学期任课教师:

专业:学号:姓名:成绩:

实验1 策略模式

1.题目:

在教材25页上,有一堆杂乱的类与接口,选取自一个动作冒险游戏。我们能看到代表游戏角色的类和角色可以使用的武器行为的类。每个角色一次只能使用一种武器,但是可以在游戏的过程中换武器,使用策略模式完成实验要求。

2.模式设计的UML类图:

3.程序源代码:

(1)角色抽象类Character.java:

public abstract class Character

{

WeaponBehavior weaponBehavior;

public Character(){};

public abstract void display();

public void fight() //委托给行为类

{

eWeapon();

}

public void setWeaponBehavior(WeaponBehavior wb) //设置武器类型 {

weaponBehavior = wb;

}

}

(2)继承角色抽象类的各个子类:

public class King extends Character

{

public King()

{

weaponBehavior = new SwordBehavior(); //初始化武器类型}

public void display()

{

System.out.print("King: ");

}

}

public class Queen extends Character

{

public Queen()

{

weaponBehavior = new KnifeBehavior(); //初始化武器类型

}

public void display()

{

System.out.print("Queen: ");

}

}

public class Knight extends Character

{

public Knight()

{

weaponBehavior = new BowAndArrowBehavior(); //初始化武器类型}

public void display()

{

System.out.print("Knight: ");

}

}

public class Troll extends Character

{

public Troll()

{

weaponBehavior = new AxeBehavior(); //初始化武器类型}

public void display()

{

System.out.print("Troll: ");

}

}

(3)武器行为的接口WeaponBehavior.java:

public interface WeaponBehavior

{

public void useWeapon();

}

(4)实现武器行为接口的各个子类:

public class AxeBehavior implements WeaponBehavior

{

public void useWeapon()

{

System.out.println("用斧头砍劈! (AxeBehavior)");

}

}

public class BowAndArrowBehavior implements WeaponBehavior

{

public void useWeapon()

{

System.out.println("用弓箭射击! (BowAndArrowBehavior)");

}

}

public class KnifeBehavior implements WeaponBehavior

{

public void useWeapon()

{

System.out.println("用匕首刺杀! (KnifeBehavior)");

}

}

public class SwordBehavior implements WeaponBehavior

{

public void useWeapon()

{

System.out.println("用宝剑刺杀! (SwordBehavior)");

}

}

(5)角色打斗的主类CharacterFight.java:

public class CharacterFight

{

public static void main(String[] args)

{

Character king = new King();

Character queen = new Queen();

Character knight = new Knight();

Character troll = new Troll();

king.display();

相关文档
最新文档