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

http://tech.ddvip.com   2007年12月30日    社区交流

内容摘要:本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。

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

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

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

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

  ⑴.命令模式解决方案描述。

  命令抽象类说明所有具体命令(ConcreteCommand)支持的接口,具体命令(ConcreteCommand)封装了接收者(Receiver)使用的服务。客户创建具体命令(ConcreteCommand),并将这些具体命令(ConcreteCommand)绑定在指定的接收者(Receiver)上,调用者(Invoker)实际执行一条命令或取消一条命令的执行。

  ⑵.命令模式结论:

  ①命令对象和命令算法被分离;

  ②调用者(Invoker)从指定的命令中分离出来并得到保护;

  ③具体命令(ConcreteCommand)是对象,它们可以进行创建和存储;

  ④在无须修改代码的前提下,新的具体命令(ConcreteCommand)可以被增加进来。

来源:vckbase    作者:吴磊    责编:豆豆技术应用

正在加载评论...