/**
* 抽象游戏角色模型。
* 一个角色可以战斗,但是战斗需要武器。
*/
public abstract class Role {
private Weapon weapon;
public void fight() {
weapon.use();
}
public void setWeapon(Weapon w) {
this.weapon = w;
}
}
/**
* 抽象武器模型。
*/
public abstract class Weapon {
public abstract void use();
}
/**
* 具体武器-剑。
*/
public class Sword extends Weapon{
@Override
public void use() {
System.out.println("剑");
}
}
/**
* 具体武器-刀
*/
public class Knife extends Weapon{
@Override
public void use() {
System.out.println("刀");
}
}
/**
* 具体角色实现-国王
*/
public class King extends Role{
}
测试:
Role role = new King();
Weapon knife = new Knife();
Weapon sword = new Sword();
role.setWeapon(knife);
role.fight();
role.setWeapon(sword);
role.fight();