在我當前的項目中,我們有幾個處理應用程序域核心概念的數據類。現在在我們項目的一些地方,我們必須根據手中的具體物體有不同的行爲。例如。 JList具有渲染對象列表的任務,但我們希望渲染略有不同,具體取決於對象的類別。例如。 A類的對象應該與B類中的一個不同,而C類也是完全不同的動物。出廠配置。對象的類 - 如何很好地做到這一點?
我們將行爲封裝在策略類中,然後有一個工廠返回適合要呈現的對象的類。從客戶的角度來看,我想沒關係。
從工廠這個得到相當醜陋的角度現在,因爲我們只能拿出這麼遠是這樣的東西
if (obj instanceof classA) return strategyA;
else if (obj instanceof classB) return strategyB;
...
現在,已經實例化對象池,地圖也將工作。但是,如果工廠必須實際創建一個新對象,那麼我們必須將另一層工廠/策略對象放入該映射中,然後返回適合的顯示策略。
是否有任何設計模式可以很好地處理這類問題?
非常感謝您的回答。您的想法很有趣,但有一個缺點,即數據對象應該只是模型,會收集大量的前端代碼。此代碼在可移植性,代碼大小,測試等方面都存在常見問題。 – xmjx 2010-03-08 19:58:35