我正在开发一个包含 Core Data 的游戏项目,我希望代码尽可能模块化。
现在我的核心数据“层次结构”链看起来像这样:
核心数据实体 -> SaveGame 类 -> GameLogic 类 -> Receiver
SaveGame 类处理与 Core Data 相关的所有内容,例如 managedObjectContext、各种实体、保存和覆盖操作等。
GameLogic 类处理游戏机制并使用从 Core Data 传递的数据做一些事情,例如计算收入、当前金额、处理级别变化等。
我对这个设置不满意,但有一个原因:如果接收器(例如 HUD)从 Core Data 请求数据,那么数据必须沿着该链传递,导致很多单行代码做得很好没什么,像这样:
+(NSArray *)passCoreDataInfo
{
return [CoreDataEntity fetchCoreDataEntityInfo] // ExecuteFetchRequest
}
然后将在层次结构中较低的类中像这样使用它:
+(NSArray *)passCoreDataInfoAgain
{
return [HigherClass passCoreDataInfo]
}
直到在链条的某个地方,我的 Receiver 用它做了一些有用的事情:
(...)
NSArray *coreDataInfo = [SomeClass passCoreDataInfoYetAgain];
(...)
这可能会浪费大量内存和处理能力,但我也不想屈服于可怕的“每个人都与每个人交谈”模型。
你们能否给我一些提示,告诉我如何更好地建立层次结构并绕过相同数据的不断传递?