设计模式实验1-策略模式复习课程

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

设计模式实验1-策略

模式

实验报告

课程:设计模式实验学期: 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();

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("啊啊...,你的斧头还厉害啊,我败了。");

}

}

相关文档
最新文档