背景:
我目前正在开发一款游戏,其中将有几种类型的家具,如椅子、桌子或绘画供玩家互动。为此,我创建了一个抽象类GameObject
来处理所有这些对象共有的所有内容(例如绘图、保存位置变量等)。家具将有一些不同的参数,例如宽度和高度(整数),以及当用户选择与之交互时会发生什么(例如:椅子 -> 如果玩家靠近,坐下,桌子 -> 没有,绘画->检查独立于距离)。可以从菜单中创建家具,该菜单会返回所选作品的某种标识符(当前为整数)。
问题:
我应该如何实现不同的家具?
一种方法是为每件家具创建一个子类。但这有两个缺点;首先很难管理这么多类,其次当创建家具时,必须以某种方式基于标识符创建正确的 GameObject 子类(请参阅后续问题)。
对我来说最合乎逻辑的选择似乎是创建一个通用类,该类在构造函数中采用宽度和高度参数,以及当用户单击对象时可以运行的可运行/其他接口。不同的值可能会存储在数据库中并根据标识符进行检索,但不同的操作仍然会出现问题,因为 Runnables 无法存储在外部,这会导致与解决方案 1 相同的问题;许多不同的类必须为当前对象选择一个。
后续问题: 根据家具和动作的类型,似乎可能需要具有附加方法的更高级的子类。如果是这样,那么无论前一个问题的解决方案如何,根据标识符选择实施哪一个的问题仍然存在。我不想使用巨大的 switch 语句来实例化不同的类,那么有什么办法解决这个问题吗?
该游戏适用于 Android 平台,但未来可能会有 IOS 端口,因此特定于 java 的答案不是可取的,但可以接受。