2
在圖表生成項目中,我有2個類。一個叫做BitmapChart,另一個叫做VectorChart。它們的所有屬性都是相同的,它們具有相同的方法(儘管有不同的實現)。有一個例外,那就是Generate()函數。在BitmapChart對象的情況下,它返回一個Stream,並且在VectorChart對象的情況下它返回一個XmlDocument。當孩子有不同的返回類型時,不能實現繼承
起初我以爲我應該使用繼承,都是'圖表',他們共享相同的屬性和方法。但後來我意識到多態性是不可能的,因爲不同的返回類型。
有沒有OO原則或設計模式我錯過了讓我的代碼更優雅?
我喜歡這個解決方案,我現在可以平等地對待圖表,直到渲染。出於好奇,這是一種工廠模式嗎? – BBQ 2013-02-15 09:21:57
不,但它與戰略模式類似。在真正的Strategy模式中,你會實現一個'Chart.render()'方法並將'ChartRenderer'實例傳遞給'Chart',但是我不會在沒有需要的情況下引入這個依賴。這個解決方案沒有我知道的模式名稱,它只是簡單的解耦。 – 2013-02-15 09:22:29