我们的应用程序为另一个系统提供了一个用户界面,该系统的数据模式不在我们的控制范围内。我们的应用程序使用 CSLA 创建业务对象以允许在第三方系统中编辑数据。然而,随着第三方数据模式的发展,我们必须随之发展。但是,在任何给定时间,我们的客户都可以拥有具有不同数据模式的任何版本的第三方系统。因此,我们的应用程序需要能够适应客户碰巧拥有的任何受支持的模式版本。
我们已经研究过可能使用策略模式来解决这个问题。本质上具有支持最低版本数据模式的基类,然后具有支持每个后续版本的派生类。反过来,我们将有一个工厂,它返回与当前版本的数据模式相对应的类。然而,我们担心这可能会导致一个长而混乱的继承链。有没有更好的方法来解决这个问题?可能使用组合而不是继承?
我发现这篇文章概述了处理此 http://securesoftwaredev.com/2009/05/31/supporting-multiple-versions-of-a-data-model/的可能方法
我不确定这种方法是否适合我们,但我想在实施任何东西之前获得一些其他的想法。