在2D游戏中,建筑物可以用模块升级,这些模块可以在商店购买。
商店是由一个典型的图标网格来表示的,每个图标代表一个可购买的模块。当鼠标悬停图标时,相关模块的名称--相关模块的描述--出现在弹出窗口中。
目前,这些模块是使用以下数据扩展抽象Module类的模型对象:
f(building)-like方法实际上是将建筑物“模块化”.在游戏开始时,商店提供了一个模块列表。当将模块应用于构建时,f(building)方法将在购买模块上调用。因此,即使不使用Singleton模式,每个*Module类也只实例化一次。
我意识到这个设计并不是最优的:
[building] => data映射.我不知道为什么,但我对这个解决方案有种不好的预感.提问时间:
[building] => data映射实际上是一个糟糕的解决方案吗?发布于 2017-08-07 14:37:22
很简单。
首先,您有IModuleDefinition接口。这个接口的主要目的是识别一个模块,可能是通过一个模块的一些唯一标识符来识别。它将有像CreateView和CreateModule这样的方法。这些实例将创建用于显示模块信息(IModuleView)和实现模块行为(IModule)的具体实例。这也意味着可以为每种类型的模块创建任意数量的实例,因此状态可以在模块实例中。
https://softwareengineering.stackexchange.com/questions/355236
复制相似问题