面向对象的更新方法

时间:2008-09-17 16:26:09

标签: oop version updates

我的任务是维护一个最初用VB6编写的应用程序。它已被导入VB .Net并且至少说代码不是面向对象的。代码中充斥着只包含公共共享属性(变量)和方法(函数)的类,其结果限制了应用程序一次打开多个项目。

项目由一个XML文件组成,该文件包含一般项目设置,以及包含其他项目相关数据的Access数据库的位置。多年来,XML文件的格式已被修改,并且已采用更新和版本控制策略。无论何时遇到旧版本,所选策略都会在打开时执行更新。到目前为止,更新只包括重新排列XML文件中的数据或更改数据库模式以及将数据从XML文件移动到数据库。

在OOP中有相当多的背景知识,我很容易看到项目应该是其他对象与之交互的自包含对象。但是,我没有看到如何在OOP中应用所选的更新策略。

在OOP中实现所选更新策略的问题使我无法使用OOP。如果有人有这方面的任务经验,或者有关如何进行的建议,我会感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:1)

构建一个读取XML文件的类,并根据该文件中的数据提供属性/方法/等。当类将XML文件写回时,请以新版本所需的方式格式化。

因此,基本上,该类将能够读取当前版本以及所有旧版本,但它将始终写出新版本。

数据将保存在类的内部变量中,而不是每次需要时都必须扫描XML文件。

在这种情况下,将VERSION节点添加到XML文件也会有所帮助。

答案 1 :(得分:0)

当您使用单词策略(即策略设计模式)时,您可能已经回答了自己的问题。

可能你可以:

  • 创建一个对转换一无所知但接受策略对象的项目类。
  • 创建类的层次结构,以模拟每种可能的转换策略。
  • 使用工厂方法使用正确的策略构建项目对象

答案 2 :(得分:0)

我不明白为什么这是一个令人不安的问题。它可以通过多种方式解决。

如果你想做一个完全面向对象的企业类型的东西,你可以采取以下解决方案的任何子集:

  • 创建一个接口IProject 描述其他对象如何交互 一个项目。
  • 创建当前的实现 实施IProject的项目 并且可以读写 当前版本。
  • 为每个过去延长项目 版本,覆盖xml和 数据库读取方法和拥有 构造函数调用时写入这些 类是实例化的
  • 为了额外的企业,创建一个 ProjectFactory,它检测到 该文件的版本和instanciates 正确的版本。
  • 如果需要更多版本, 重写当前要做的项目 和过去的项目一样, 访问新版Project 所有读取然后调用 写。

此解决方案的优点是您可以继续使用不同的版本进行蜿蜒,每个新版本只需要能够从以前的版本更新,所有以前的版本都可以级联到倒数第二个版本。