我需要創建一個基於其他對象構建XML配置文件的類。面向對象設計問題
有3種不同的物體。構建算法對於所有對象非常相似,但不相同。
我想用一個抽象方法使用一個基類,然後創建一個派生類,其中我會重寫抽象方法。
但問題是這3個對象沒有共同的接口或基類。這些對象是第三方組件。我無法重構它們。所以對於所有對象沒有任何共同的合同。
這種情況有沒有方便的解決方法?也許一些我不知道的設計模式?
我需要創建一個基於其他對象構建XML配置文件的類。面向對象設計問題
有3種不同的物體。構建算法對於所有對象非常相似,但不相同。
我想用一個抽象方法使用一個基類,然後創建一個派生類,其中我會重寫抽象方法。
但問題是這3個對象沒有共同的接口或基類。這些對象是第三方組件。我無法重構它們。所以對於所有對象沒有任何共同的合同。
這種情況有沒有方便的解決方法?也許一些我不知道的設計模式?
你可以創建你自己的3個自定義類,分別對它們進行擴展[我不清楚C#],並實現一個通用契約。
你可以定義一個XMLSerializable
抽象類,然後使用Adapter pattern這些第三方組件改編成XMLSerializable
對象
Facade似乎適合您的情況。
爲了簡單起見,您還可以使用數據表類。這些可以讀取和寫入XML文件。
http://msdn.microsoft.com/en-us/library/system.data.datatable.writexml.aspx
代碼中支持的類型是否可能更改?那就是要問,該解決方案是否可以輕鬆擴展以支持更多的第三方類型?如果不是,那麼只需使用基類來執行通用工作和派生類來處理任何細節。 – 2011-01-24 10:55:42