在Java中为级别内的形状类创建层次结构

时间:2015-05-20 12:45:26

标签: java oop

我正在开发基于Java的游戏,我需要为一些基本形状建模。我目前的实现在相同维度的形状上有很多重复的属性。

示例,我有一个Interactive Rectangle参与Box2d世界,我有一个Background Rectangle,但Box2d没有参与世界。但是这两个类都需要定义widthheight

有谁知道更好的方法来建模这些数据?

目前的实施..

current implementation

模拟新实现的想法,但InteractiveBackground只能从一个父级继承。

idea for new class diagram

我拥有InteractiveBackground类的原因是我可以循环访问我的对象,如下所示。

for (Background bgShape : getLevel.getBGShapes()){

    bgShape.draw(
        gl2,
        new Vec3(
            bgShape.getPosition().x,
            bgShape.getPosition().y,
            bgShape.getPosition().z));
}

for (Body body = world.getBodyList(); body != null; body = body.getNext()) {

    Interactive iaShape = (Interactive) body.getUserData();

    iaShape.draw(
        gl2,
        new Vec3(
            body.getPosition().x,
            body.getPosition().y,
            0.0f));
}

同样Interactive类定义了Background中不存在的一些属性,

public abstract class InteractiveShape extends Shape {

    private String bodyType;
    private float density;
    private float friction;
    private float restitution;
    private boolean fixedRotation;
    private Body body;
}

1 个答案:

答案 0 :(得分:1)

  1. 第二个例子好多了,因为Rectangle实际上是一个形状,但有额外的数据(宽度和高度)
  2. 我认为IteractiveBackground是必要的,除非他们添加任何其他操作(从图片中他们不添加)。