存储 频道

命令模式实现对象存储 对象与关系数库

  【IT168 应用】面向对象方法在软件开发的分析、设计以及编码中作用越来越重要,它在适应系统需求变化、提高软件可重用性和开发效率方面有着其它开发方法无法比拟的优点。面向对象思想将应用域中的概念描述成对象,应用系统由一系列对象构成,对象之间可以传递消息,系统的运作可说就是对象间的协同工作。有过开发经验人都知道,应用系统中有些是对象是要持久存在的,需要将它们存入磁盘,以便在重启系统时能够调入系统。这些对象在面向对象方法中主要指实体对象,为了一致,本文中以实体对象代表所有需要存储的对象。

  目前,对象存储方式有两种:一种是存入文件,另一种是存入数据库。将对象存入文件中,容易实现,操作简便,有很多类库已实现了此功能,但是文件存储方式难以表示对象之间的关系,性能上也有所不足,难以满足大型系统的要求。将对象存入数据库,理想的选择是面向对象数据库,但面向对象数据库虽有所发展,仍不成熟,还不能满足需要。关系型数据库系统经过多年的发展,技术已经相当成熟,应用十分广泛,大部分信息系统都以其作为后台数据管理。如今成熟的数据库产品有很多,为了降低在数据库编程方面的难度,各种数据库访问模型相继问世,如ADO、ODBC、BDE、ADO.Net和JDBC等,虽然如此,关系型数据库并非为适应面向对象技术而存在和发展,面向对象语言和关系数据库之间不能实现直接对象存取,需要经过转换,为了提高开发效率,降低应用系统与数据库之间的耦合度,在二者之间开发对象存储模块十分必要。

  实现策略

  数据库特点。数据库由数据表构成,在面向对象编程中,数据表一般代表实体对象,表中的字段代表实体对象的属性。由于数据表一种特殊的数据结构,每个表的字段数、字段类型与长度和其他约束均不相同,因此建立能统一表示各数据表结构的类是很难的。数据表虽在结构上有所不同,但各数据表也有相同之处:它们都有一个名字,表上都有共同的操作,就是如查询、增加、删除、修改等存取操作。

实体对象与数据表之间的映射。针对数据库结构的特点,我们为所有实体对象建立一个抽象基类,类中有实体对象名,有数据库存取操作的接口,每个接口以数据库连接对象为参数。实体对象可从抽象基类继承,增加相关属性和属性的赋值与读取方法,实现从抽象基类中继承而来的数据库存取接口。数据库存取接口的实现策略是:读取实体对象名作为数据表名,用数据访问模型建立记录集,用记录集中的字段值为实体对象的属性赋值或将属性值存入数据表中。这样就为实体对象与数据表建立了对应关系。

  命令模式。实体对象与数据表的建立对应关系后,不能孤立存在,不能由其自身创建和存储,必须采用某种机制将它们组织起来,向应用系统提供一致服务,与其他对象交互。借鉴设计模式中的命令模式可以完成此项功能。命令模式结构如图1所示。

对象与关系数据库(上)

  图1:命令(Command)设计模式

0
相关文章