我需要创建一个基于其他对象构建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