我正在研究一個合併Core Data的遊戲項目,我希望代碼儘可能模塊化。班級等級 - 誰應該和誰說話?
現在我的核心數據「層次」鏈是這樣的:
核心數據實體 - > SAVEGAME類 - > GameLogic類 - >接收機
遊戲存檔類處理相關的一切核心數據,例如作爲managedObjectContext,各種實體,保存和覆蓋操作等。
GameLogic類掌握着遊戲機制,並且對核心數據傳遞的數據做了一些事情,比如計算收入,當前金錢,處理級別變化等等。
雖然出於以下原因,我對此設置並不滿意:如果Receiver(例如HUD)從Core Data請求數據,那麼數據必須沿着該鏈傳遞,導致許多單線程那些幾乎什麼都沒有,這樣的:
+(NSArray *)passCoreDataInfo
{
return [CoreDataEntity fetchCoreDataEntityInfo] // ExecuteFetchRequest
}
這將隨後在一個類中使用這樣低的層次結構:
+(NSArray *)passCoreDataInfoAgain
{
return [HigherClass passCoreDataInfo]
}
直到某處鏈我的接收器確實有用的東西吧:
(...)
NSArray *coreDataInfo = [SomeClass passCoreDataInfoYetAgain];
(...)
這大概浪費了大量的內存和處理能力,但我也不想屈服於可怕的「每個人都在跟每個人交談」的模型。
你們可以給我一些提示,告訴我如何更好地設置y hiararchy並解決這個問題,並傳遞相同的數據嗎?
這會爲「推」的消息,即CoreDataEntities「鳴叫」工作有關的任何更新到其後的其他對象。但OP要求「拉」消息傳遞,即其他對象要求CoreDataEntities提供最新數據,因此這些對象可能不希望從後者獲取所有'tweets'。 – Lukman 2012-08-13 14:05:53