“任意数据存储”的模式 - 平铺地图

时间:2014-04-18 14:25:30

标签: java design-patterns storage

我正在构建一个平铺地图系统。

TileModel ,在该类型的所有图块之间共享;它处理渲染,动画,平铺状态等。

然后有 TileData ,它表示平铺地图中的具体图块,包含指向其模型的指针,以及任何可保存数据(图块可以包含已删除的项目) ,陷阱属性,隐藏的门,可上锁的门等)。 模型处理保存。

           TileModel
    +---------------------+                  TileData
    | Rendering code      |        +-------------------------+
    | Animation code      |        | Data for concrete tile  |
    | Tile state handling |<-------| Pointer to Model        |
    | Saving / Loading    |        +-------------------------+
    +---------------------+

现在出现了我不确定的事情 - 我希望允许模型在磁贴中存储任意数据。

一些选项:

    Object中{li> TileData字段TileModel可以将其存储到任何类型的数据存储中
  • int[]boolean[]TileData中的数组,并强制TileModel仅使用这些数组。
  • 这些额外数据在Map<String,Object>中为
  • TileData。我觉得这很浪费。

哪种模式效率最高(最快,最干净,内存最便宜)?

1 个答案:

答案 0 :(得分:0)

创建一个TileModelData接口并创建一组实现TileModelData的tile模型类,并包含特定于该tile模型的数据的成员。

interface TileModelData {
    TileModel getModel();
}

class TileData {
    ...
    TileModelData modelData;
}

class OceanTileData implements TileModelData {
    static TileModel model = TileModel.Ocean;
    TileModel getModel() { return model; } 
    int oceanDepth;
}

class ForestTileData implements TileModelData {
    ...
    int treeDensity;
}