当前位置:文档之家› 设计模式实验1策略模式.doc

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

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

实验报告

课程:设计模式实验学期: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() //委托给行为类

{

https://www.doczj.com/doc/5212220991.html,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();

System.out.print("妖怪过来了,让我");

king.fight();

queen.display();

System.out.print("我手里有匕首,我");

queen.fight();

troll.display();

System.out.print("哈哈,我不怕你们,我");

troll.fight();

knight.display();

System.out.print("国王小心,让我");

knight.fight();

king.display();

System.out.print("你的射击水平太差了,还是让我来吧,我");

king.setWeaponBehavior(new BowAndArrowBehavior()); //更换武器

king.fight();

troll.display();

System.out.print("哈哈,你们完蛋了,我也有弓箭,");

troll.setWeaponBehavior(new BowAndArrowBehavior()); //更换武器

troll.fight();

king.display();

System.out.println("骑士,用你的斧头啊!给我使劲劈死他。");

knight.display();

System.out.print("是,国王,妖怪,拿命来吧!");

knight.setWeaponBehavior(new AxeBehavior()); //更换武器

knight.fight();

troll.display();

System.out.println("啊啊...,你的斧头还厉害啊,我败了。");

}

}

相关主题
文本预览
相关文档 最新文档