想象一下,我有一個抽象的「FriendEvent」模型,它有幾個不同的具體實現,即。 FriendPosted,FriendCommented,FriendUploadedPhoto等。它們都應該以我對FriendEvents的視圖呈現,但應該在視覺上彼此不同(例如,FriendUploadPhoto應包含縮略圖)。多態視圖模式
什麼是良好的面向對象的模式來實現這一目標?
我有興趣瞭解是否有替代方法在視圖代碼中打開模型的具體類。這種感覺不對,因爲它使用條件邏輯,我認爲它應該可以依賴於多態,但我很難想出一個更好的主意。有沒有建立模式來解決這個問題?
(我顯然不希望實現模型視圖邏輯,因爲這將被混合的責任,因爲我可能要爲每個型號不同的看法)
澄清:如何在模型層中建模不同的事件類型不是問題。有幾種衆所周知的面向對象解決方案。問題涉及視圖代碼,它負責直觀地呈現模型。我想我有一個EventView類來處理顯示事件(模型)。問題是:如何實現這個類沒有切換塊,根據事件的具體類型選擇不同的代碼路徑是渲染。
聽起來像你只想使用繼承。有一個具有所有常用屬性的基類,然後讓您的具體實現從您的基類繼承。 – 2011-04-14 12:12:58
@Evan顯然我在模型層使用繼承來實現多態。問題涉及視圖代碼。 – KaptajnKold 2011-04-14 12:27:30
任務陳述太少。班級的責任和合作者是什麼?在最簡單的情況下,它可能是帶有對EventType類的引用的單個Event類的實例。 – 2011-04-14 13:01:56