Java设计模式:游戏中的角色和武器抽象设计

/**
 * 抽象游戏角色模型。
 * 一个角色可以战斗,但是战斗需要武器。
 */
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();
发布了1029 篇原创文章 · 获赞 987 · 访问量 336万+

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/93479572