具有更多实现或非抽象类的抽象类?

时间:2015-10-15 21:44:12

标签: java

我正在开发一款名为Tank的游戏。 每个坦克都有一个名为TankParameters的类对象。 TankParameter由坦克的速度,旋转速度和健康组成。

目前,我的计划是将TankParameters类抽象化,并将TankParameters类的不同实现传递给Tank类。所以,我们假设我将有一个名为LightTankParameters的实现,它将相应地设置属性。或者我可能会HeavyTankParameters相应地设置属性。

现在我的问题是,而不是让我们说创建如此多的扩展TankParameters的类将使TankParameters作为非抽象类并使构造函数设置为更高效提供值的变量,或者最好继续为不同的TankParameters类型创建类。

我问这个问题,因为我可以在游戏中添加功能,人们可以修改他们的坦克,从而修改坦克参数。

此外,如果有更多的实现更好,那么设置变量的更好方法是什么

是吗

public class LightTankParameters extends TankParameters{

    private static final int MAX_HEALTH = 100;

    public LightTankParameters() {
        super(MAX_HEALTH);
    }
}

OR

public class LightTankParameters extends TankParameters{

    public LightTankParameters() {
        super(100);
    }
}

这是我的TankParameters类

public abstract class TankParameters {
    /**
     * Max health of the tank
     */
    protected int maxHealth;
......
}

1 个答案:

答案 0 :(得分:3)

我认为这是Creational设计模式Creational design patterns的工作。听起来你需要多个单一接口的实现。基于你的解释,这听起来像Factory Patterns之一对你有用(这应该审查另一个创作模式可能对你更好,像Builder模式)。如果没有整体设置的整体视图,很难指定要使用的确切创建模式。我建议查看不同的创作设计模式,看看哪种模式最适合您的设置。