以前我聽說過多重繼承的缺陷,而且我知道.Net開發者反對它被包含在內。如何在.Net中處理真實世界的多重繼承場景?
說到這裏,考慮一個簡單的例子,比如'遊戲公司'。一家遊戲公司可以是:
- 軟件開發人員,像Platinum Games
- 出版商,例如像Agetec
- 同時開發商和出版商,在Blizzard Entertainment
- 遊戲硬件製造商只有(沒有一個公司只是一個製造商的例子)
- 以上全部,即Nintendo
如果我必須在.Net中對此進行建模,那麼我將如何處理「存在」關係存在以及公司可以同時存在多個關係這一事實?想象一下,我有一個模型:
Game
類,有List<Developer>
和Publisher
作爲屬性Console
類,有一個Manufacturer
財產。
在一個理想的情況下,這應該儘可能安全,並且易於過濾和導航到每個類(如完全連接的實體框架映射)。
我以同樣的態度思考了一些事情,對此我可能知道「正確」的答案。
如果我有FatPerson
和TallPerson
作爲基類並想「解決」多繼承限制?因爲很可能有一個同時又胖又胖的人。在這種情況下,如果有一個單獨的Person
有兩個屬性,即Weight
和Height
,它可能會更乾淨,從而完全消除基類。這只是一個重寫我以前所做的任何過濾的問題,而這些過濾是基於要考慮這些新屬性的對象的類型。
對於每個多重繼承情況,是否存在與此相當的內容?對於我提出的這個特殊情況呢?
更新:
我讀過,被標記爲我的一樣這個問題的答案(前張貼這一個),但我在這裏稍微不同意。我認爲這與將SQL優化問題標記爲每個其他SQL優化問題的重複相同。最後,每種情況都是不同的情況,並且需要不同的方法/答案。我認爲這適用於此,因爲我詢問了一個非常固定的情況,就像其他答案一樣。
也許我不明白。你的解決方案是:如果你不繼承,那麼你將不會有多重繼承?無論如何......問題是什麼? –
您列舉的特定情況並未定義任何需要多重繼承的情況。比如說暴雪,你可能只有兩個對象,BlizzardDeveloper和BlizzardPublisher。在繼承Developer和Publisher的同時獲得一個對象會獲得什麼? –
如果你使用屬性,你甚至可以用提供它的語言來躲避MI,所以是的。真正的問題是你是否需要諸如Publish之類的方法,在這種情況下,如果它實現了界面,你就斜視並說實體是一個發佈者IPublish –