游戏角色类设计,继承还是构图?

Hon*_*ang 3 java

我正在尝试为游戏创建角色类.

关于角色类: - 它有不同的角色,例如战士,射手,国王. - 每个都有不同的属性,例如攻击,防御.

我的问题是我应该使用继承还是合成?我有一个Character Class,那么我应该创建warrior类并扩展字符类,还是应该在Character类中添加一个像String ID ="Warrior"这样的标识符?

Avi*_*Avi 6

如果有一个属性组合的选项(例如,如果你有一个WarriorKing类),我会做的是为类+接口使用继承.

如果你想在WarriorKing之类的东西中享受这两种类型的属性,你可以做类似的事情:

class Character { ... }

interface Warrior {...}

interface King {...}

abstract class KingImpl extends Character implements King

abstract class WarriorImpl extends Character implements Warrior
Run Code Online (Sandbox Code Playgroud)

然后你结合了一切:

class WarriorKing extends Character implements Warrior, King {
    private King kingImpl;
    private Warrior warriorImpl;

    public WarriorKing() {
        kingImpl = new KingImpl();
        warriorImpl = new WarriorImpl();

    }
Run Code Online (Sandbox Code Playgroud)

现在假设您kill()在Warrior界面中有一个方法需要由每个实现类实现(WarriorKing必须实现它),并且已经在抽象的WarriorImpl类中实现,您可以执行以下操作:

class WarriorKing extends Character implements Warrior, King {
    private King kingImpl;
    private Warrior warriorImpl;

    public WarriorKing() {
        kingImpl = new KingImpl();
        warriorImpl = new WarriorImpl();

    }

    public void kill() {
      this.warriorImpl.kill()
    }

 }
Run Code Online (Sandbox Code Playgroud)

这样,您可以通过一次实施一切来享受所有的世界,拥有模块化的类设计,您可以享受您可能需要的任何角色组合.祝好运!