面向对象的更新方法

     2023-02-18     180

关键词:

【中文标题】面向对象的更新方法【英文标题】:Object Oriented Update Approach 【发布时间】:2010-09-10 05:52:39 【问题描述】:

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

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

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

在 OOP 中实施所选更新策略的问题使我至今无法使用 OOP。如果有人有此类任务的经验,或有关如何进行的建议,我将不胜感激您能提供的任何帮助。

【问题讨论】:

【参考方案1】:

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

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

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

将 VERSION 节点添加到您的 XML 文件中也会有所帮助。

【讨论】:

虽然我同意这很可能是目前最好的解决方案,但它放弃了开放策略的更新,转而支持保存策略的更新。目前,更新保存是可行的,但随着我们转向更多由数据库驱动的解决方案,这很可能还不够。【参考方案2】:

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

也许你可以:

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

【讨论】:

【参考方案3】:

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

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

创建一个接口 IProject 描述其他对象如何交互 有一个项目。 创建当前的实现 实施 IProject 的项目 并且可以读取和写入 当前版本。 为每个过去扩展项目 版本,覆盖 xml 和 数据库读取方法并具有 构造函数调用 write 当这些 类被实例化 为了增加企业精神,创建一个 ProjectFactory,它检测 文件的版本并实例化 正确的版本。 如果需要更多版本, 重写当前项目做 和过去的项目一样, 访问新版本的 Project 读取所有内容,然后调用 写。

此解决方案的优点是您可以继续在不同版本中徘徊,每个新版本只需要能够从之前的版本更新到之前的版本,所有之前的版本都会级联到倒数第二个版本。

【讨论】:

java学习轨迹面向对象(持续更新)

...所作,侵删 6月12日-7月每日更新Java学习轨迹 一、面向对象 类和对象 1.new关键字所完成的事情 1)为对象开辟了新的内存空间 2)调用类的构造方法 3)返回生成对象的地址 Dogdog=newDog(); dog是引用,new... 查看详情

结构化方法与面向对象方法之应用比较

...生了许多众所周知的开发方法,如结构化方法,原型法,面向数据结构的Jackson方法、面向对象方法等。其中,结构化方法和面向对象方法是两种应用十分广泛的软件开发方法,未来的软件开发过程中,可 查看详情

面向对象编程思想总结

什么是面向对象编程?  就是把一类具有相同属性和动作的实体抽象成为计算机里面的类,也就是对象的模板,把属性和方法封装成一个类中.处理业务的流程就是对象之间的信息传递.把程序中的所有东西当做对象来进行处理. ... 查看详情

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。打个比方蒋介石和毛主席分别是面向过程和面向... 查看详情

入门go语言面向对象

目录一、面向对象简介1.1什么是面向对象?1.2类和对象1.3面向对象编程的好处二、匿名字段实现继承及对象创建三、成员操作四、指针类型匿名字段五、多重继承六、基本方法创建七、为结构体添加方法八、使用方法注意事项九... 查看详情

结构化方法与面向对象方法

结构化方法与面向对象方法14231011金燊目录 一、结构化方法结构化方法的特点结构化方法的发展 二、面向对象方法面向对象方法的特点面向对象方法的发展 三、比较区别应用现状 四、总结与展望 五、参考文献&... 查看详情

结构化方法与面向对象方法的比较

...nbsp; 结构化方法在软件工程中得到广泛接受和使用,而面向对象方法提出后,当代软件工程的发展面临着从传统的结构化方法到面向对象方法的转变,本文剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过... 查看详情

结构化方法和面向对象方法之比较

...软件开发技术的发展而言,主要经过了结构化开发方法和面向对象的软件开发方法。  鉴于结构化方法与面向对象方法在软件开发过程中的广泛应用,从结构化方法与面向对象方法的基本思想出发,引用一些简单的软件实例说明... 查看详情

java之面向对象概述,类,构造方法,static,主方法,对象

一、面向对象概述面向过程“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。“面向过... 查看详情

结构化方法和面向对象方法的比较

结构化方法和面向对象方法的比较翁松秀北京航空航天大学   摘要:编程之精髓在于编程思想,而不同的编程方法有不同的编程思想。结构化程序设计方法一直以来都是编程人员基本的编程方法,而近年来流行的面向... 查看详情

面向过程分析方法与面向对象分析方法的区别

一、结构化分析(面向过程)方法   结构化分析方法(StructuredMethod,结构化方法)是面向过程的程序设计的方法,是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素... 查看详情

js面向对象的基本概念和基本使用方法

js面向对象的基本概念和基本使用方法->js是不是一个面向对象的语言?不是:与传统面向对象的理论语言有矛盾。C#,Java。是:js里面到处都是对象,数组,时间,正则…和DOM。也可以像传统面向对象的语言那样用new的方式创建... 查看详情

结构化方法和面向对象方法

结构化方法与面向对象方法之比较姓名 周子硕  学号 14061031软件开发的过程中,结构化方法和面向对象方法先后被提出,为解决不同的软件开发问题带来了不同的思路。下面是对于结构化方法和面向对象方法的认... 查看详情

面向对象(代码片段)

面向对象含义Java的核心思想就是OOP(面向对象编程)OO:面向对象面向过程:线性思维面向对象:分类思维面向过程和面向对象不可分割,面向对象相当于一个框架,面向过程相当于具体执行流程抽象:把共性抽取出来抽"像&quo... 查看详情

面向对象和类

...例publicclassTest{publicTest(形式参数列表){//方法体}}  二、面向对象  1、类:具有相同行为和属性的对象的集合  2、对象:通过调用构造方法所形成的实例化的目标,通过对象可以操作构造方法的属性 查看详情

面向对象

面向对象和面向过程面向过程面向过程的思想把一个项目或者一件事情按照顺序一步一步完成面向对象ObjectOrientedProgramming面向对象的思想把一个项目或者一件事情,分成更小的项目或者更小的部分,每一个部分负责什么功能,然... 查看详情

面向对象

面向对象1.面向对象的简介  面向对象(ObjectOriented,OO)是软件开发方法,也是一种编程思想,它将现实生活中的事物映射到程序世界中,同时还是一种对现实世界理解和抽象的方法。  1.1面向对象技术  面向对象技术包括... 查看详情

浅谈结构化方法与面向对象方法

浅谈结构化方法与面向对象方法一.引言   在软件开发过程中,有很多不同的软件开发方法。选取合适的软件开发方法,对于软件开发的过程和结果有着非常重要的影响。我们知道自软件工程发展以来诞生了很多不同... 查看详情