我正在构建一个平铺地图系统。
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
。我觉得这很浪费。哪种模式效率最高(最快,最干净,内存最便宜)?
答案 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;
}