2010-08-31 48 views
0

我們正在構建一個遊戲,以便可以幫助更好地將對象放到上下文中。'主對象'需要存在沒有數據庫調用

我有一個情況我有一個結構,有點像這個..

- Template 
    - Data(ICollection<Statistics>) 

    - Character: Template 
    - Data (ICollection<Statistics>) 

要精心... 讓我們假設每一個角色都有一個屬性「健康」。現在,「健康」的默認值是15.

現在讓我們假設每個角色都以此開始。作爲一生中的角色,它可能會以新的價值增加「健康」。但是他們仍然需要保留默認參考。

現在,「性格」繼承默認從「模板」,但每個角色都會有自己的一套數據的追加的默認值。原始繼承不起作用,因爲Item附加,它不會覆蓋。原始的默認值仍然需要存在。

可以解決它像這樣..

- Character 
- Template 
- Data (ICollection<Statistic>) 

但是這是多餘的給我。它需要很多額外的數據庫調用。基本上每個對一個項目的調用都必須執行相同的代碼兩次,因爲它也必須構建一個Template對象。

有沒有更合乎邏輯的方法去做這件事?

+0

你的措詞難問題的理解。你能詳細說明「繼承默認值」是什麼意思嗎? – 2010-08-31 15:33:14

+0

我已更新以使其更清楚。 – Ciel 2010-08-31 15:48:37

回答

1

如果我正確地理解了你,這聽起來像你想在模板中有靜態值,然後動態更新這些值的繼承者?如果所有角色都需要具有相同的默認數據,您是否可以這樣做?

abstract class Template { 
    ICollection<Statistics> DefaultData; 
} 

class CharacterTemplate : Template { 
    private CharacterTemplate() { 
     //appropriate data initialization 
    } 

    private static readonly CharacterTemplate _instance = new CharacterTemplate(); 
    public static Template Instance { get { return _instance; } } 
} 

class Character { 
    Template template = CharacterTemplate.Instance; /* CharacterTemplate */ 
    ICollection<Statistics> Data ; 
} 

讓Template實現者實現Singleton模式,並且您必須從數據庫中最多初始化一次。

有關Singleton模式的背景下,檢查維基百科:http://en.wikipedia.org/wiki/Singleton_pattern#C.23

+0

我不明白這將如何與實體框架系統一起工作。什麼是辛格爾頓模式?我不熟悉這個概念。 – Ciel 2010-08-31 16:30:24

+0

Singleton模式定義了一種在系統中只有一個類實例的方法。它基本上保證每個Character對象都有一個對同一個CharacterTemplate對象的引用,這就是你每次都必須初始化它的方式。它應該適用於EF,因爲它不會影響你如何填充對象,只是在何時。 – arootbeer 2010-08-31 16:35:07

+0

所以你說要在CharacterTemplate構造函數中從數據庫中檢索數據,然後讓所有內容都可以訪問它? – Ciel 2010-08-31 16:36:13

相關問題