Oop 面向对象的更新方法

Oop 面向对象的更新方法,oop,version,updates,Oop,Version,Updates,我的任务是维护一个最初用VB6编写的应用程序。它已经被导入到VB.Net中,至少可以说代码不是面向对象的。代码中充斥着只包含公共共享属性(变量)和方法(函数)的类,这些类的结果限制了应用程序一次打开多个项目 项目由包含常规项目设置的XML文件以及包含其他项目相关数据的Access数据库的位置组成。多年来,XML文件的格式已被修改,并采用了更新和版本控制策略。每当遇到旧版本时,所选策略在打开时执行更新。到目前为止,更新只包括在XML文件中重新排列数据,或进行数据库模式更改,以及将数据从XML文件移

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

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

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


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

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

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

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


在这种情况下,向XML文件中添加版本节点也会有所帮助。

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

也许你可以:

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

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

      如果您想做一个完全面向对象的enterprisey类型的事情,可以采用以下解决方案的任何子集:

      • 创建一个接口IProject 描述其他对象如何交互 有一个项目
      • 创建的当前实现 实施IProject的项目 并且可以读写数据 当前版本
      • 为每一个过去扩展项目 版本,重写xml和 数据库读取方法,并具有 当这些 类是实例化的
      • 要获得更大的进取心,请创建一个 ProjectFactory,它检测 文件和实例的版本 正确的版本
      • 如果需要进一步的版本, 重写当前要执行的项目 和过去的项目一样, 访问Project的新版本 所有的阅读,然后打电话 写

      此解决方案的优点是,您可以继续使用不同的版本,每个新版本只需要更新到以前的版本,所有以前的版本都会层叠到倒数第二个版本。

      虽然我同意这很可能是目前最好的解决方案,它放弃了“打开时更新”策略,转而采用“保存时更新”策略。目前,save上的更新是可行的,但随着我们转向更数据库驱动的解决方案,这很可能是不够的。