在这里简要说明一下notify()的实现:void notify:: dataentry (userview *psender){assert(psender==null||*y()); //判断视图列表是否为空position pos = getfirstviewposition ();while (pos! = null){userview* pview = getnextview (pos);assert_vaild (pview);if (pview != puserview) pview->notity ();}3.2 适配器模式(adapter) 在许多大型企业及某些行业的局域网或广域网内,由于历史和技术发展的原因存在着多种数据库同时在运行的情况,比如某大型企业、某地区的电力单位或电信公司等,可能正同时在使用着多种数据库(oracle, db2, sql server, sybase 或informix等)。在这样多的数据库并存的环境下,要求能任意访问到这些数据库,实现多种数据库间的数据转化、资源共享、数据一致性和完整性成为系统开发和应用中一个尤为突出的问题。 构建通用的数据库访问主要是实现对数据源访问的底层操作的封装,而仅仅给出数据读取对象或数据集对象等供商业逻辑层调用,因此采用adapter模式,根据不同的数据提供者产生相应的数据库连接、数据库命令等数据库对象来实现对低层操作的封装,通过暴露执行数据集对象等上层操作以供其他逻辑层调用。 对数据库的访问基础是基于结构化查询语言(sql),在具体对数据库的访问中,是通过sql语句来实现的。采用这种设计模式对数据库进行访问的方法是一种通用访问技术,即应用程序可用相同的源代码访问不同类型的数据库,如sybase, oracle等。 adapter模式是将一个类的接口转换成客户希望的另外一个借口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,它又称为“wrapper”包装器。当要使用一个已经存在的类,而它的接口不符合需要,或是创建一个可以复用的类,该类可以与其它不相关的类或不可预见的类协同工作。adapter模式的基本结构图如图2所示:图2 adapter模式的基本结构图 adapter模式应用在报表系统中,模式中target即为应用程序中数据访问类,它负责进行数据库的连接、进行数据库操作等等;模式中的adaptee为实际存在的各种数据库;在进行系统实现时的主要工作是对不同的数据库编写相应的数据源驱动程序,即编写adapter。 应用程序对数据库的访问主要是选择一个数据源并连接它、提交sql语句以及检索结果,除此以外还可以确定并调整驱动程序的性能、浏览数据库编目等等;应用程序中数据访问类通过数据源驱动程序访问不同数据资源中的数据,每个不同的数据资源类型由一个数据源驱动程序支持。 数据源驱动程序是处理数据访问类对象的函数调用,提交sql请求到一个指定的数据元,并把结果返回到应用程序;如果有必要,数据源驱动程序修改一个应用程序请求,以使请求与相关的dbms支持的语法一致。每个驱动程序都针对特定的dbms;例如,一个oracle驱动程序不能直接访问informix dbms中的数据。数据源驱动程序展示基础dbms的能力,他们不能实现dbms不支持的能力。它进行数据源连接、检查应用程序中的函数错误、初始化事务和把sql语句提交给执行的数据源。数据源驱动程序必须把应用程序的 sql修改成针对相应dbms的sql,并把数据发送到数据源,或从数据源检索数据,包括根据应用程序的指定来转换数据类型,最后断开与数据源的连接。 当数据源驱动程序的数量增加,并且处理的事物逐渐复杂时,仅仅用应用程序的数据访问类来进行驱动程序的管理已大大增加了系统的负担,我们可以提供一个驱动程序管理器来管理数据源驱动程序。此时应用程序是被连接到驱动程序管理器,而不是驱动程序。它使用应用程序传递的连接句柄搜索目标驱动程序中的函数地址,并通过地址调用那个函数。驱动程序管理器多数只是把函数调用从应用程序传送给正确的驱动程序。驱动程序管理器最终的作用是加载和卸载数据源驱动程序,应用程序只加载和卸载驱动程序管理器。当它要使用一个特殊的驱动程序时,它调用驱动程序管理器中的连接函数,并指明一个特殊数据源或驱动程序名。使用该名称,驱动程序管理器为驱动程序文件名查询数据源信息,比如,然后它加载驱动程序,保存驱动程序中每个函数的地址,并调用驱动程序中的连接函数,然后初始化它自己,并连接到数据源。当应用程序使用驱动程序做完工作后,它调用驱动程序管理器中的sqldisconnect。驱动程序管理其中调用驱动程序中的此函数,断开与数据源的连接。然而,驱动程序管理器重新连接它时,把驱动程序保留在内存中。只有当应用程序释放驱动程序使用的连接,或者使用不同的驱动程序连接,并且没有器它连接使用此驱动程序时,它才卸载驱动程序。3.3 桥接模式(bridge) bridge设计模式时对象结构模式的一种,它将抽象部分与实现部分分离,使它们能够独立实现。当在一个程序中,某一个抽象可以由很多实现方法的时候,我们通常是使用面向对象中继承的方法来实现并协调这些方法。但是这种继承机制有以下不足的地方,而使用bridge设计模式都能使这些不足得到很好地解决。继承机制使客户代码在实现功能的时候涉及到特定的相应平台,与平台产生相关性,对代码的移植产生很大的困难,但是bridge设计模式将抽象和实现部分放在独立的不同层次的类结构中,将抽象中与系统平台相关部分分离开来,同时也降低了实现部分对编译的依赖性,当改变一个实现类时,并不需要重新编译抽象部分和它的客户程序。我们的报表系统是一个通用系统,我们希望这个系统能够支持多窗口系统。虽然不同的窗口系统有不兼容的程序设计接口,但是所有的窗口系统总的来说还是在做同一件事情,我们可以对不同的窗口系统做一个统一的抽象,在对各窗口系统的实现做一些调整,使之符合公共接口。 我们首先定义一个windows抽象类,它封装了需要各窗口系统都要做的一些事情,并且能跨越不同的窗口系统实现。在这个抽象类提供了支持大多数窗口系统的方便接口,其具体的子类支持用户用到的不同种类的窗口,而对不同窗口系统的实现则由windowimp类层次隐藏。windowimp是一个封装了窗口系统相关代码的对象的抽象类,为了使报表系统运行于一个特定的窗口系统,我们用该子系统的一个windowimp子类设置window对象。这样,避免了对窗口系统的直接依赖,这样可以让windows类保持相对较小而且较稳定,同时还能方便的扩展实现层次结构以支持新的窗口系统。window和windowimp层次结构之间的关系有下图所示,其中windows_x即为可以扩展的窗口系统接口。 图3 window和windowimp层次结构4 结语 应用设计模式可以使看似复杂的系统设计和实现简单化,设计出来的系统具有灵活、健壮和可复用性强等特点,而且还可以方便开发人员的沟通和交流,保证软件开发文档的准确性和易读性,便于代码开发工作。在报表系统中引入设计模式,不仅加深了对面向对象思想的认识,而且使得系统的设计间接明了,提高了软件系统的可维护性和伸缩性。文章就设计模式在通用报表系统中的使用进行了一定的研究和探讨。主要就通用报表系统中几个关键的通用问题给出了相关的设计模式解决方案。该通用报表的设计为解决集团性企业、政府统计的报表汇总分析、预算编制、合并报表的解决方案;它还可以引入到分销管理中,以承担drp系统中临时性、非结构化数据的统计任务;根据统计管理对象的不同,它还能成为网上人事统计、资产管理系统的二次开发平台。参 考 文 献:1. erich grama , richard helm, ralph johnson, et al. design patterns elements of reusable object-oriented software. reading (mass): addison wesley publishing co, 19942. bertrand meyer, object-oriented software construction (second edition), prentice-hall international, inc, 19993. vangalur s. alagar and rokia missaoui(eds): object-oriented technology for database and software systems, world scientific publishers, singapore, 19954. grady booch: object-orient analysis and design with application, second edition, benjamin/cummings, menlo park(calif.), 1994 5. peter coad. object-oriented patterns. communications of the acm, 35(9):152-159, september 1992.6. 刘立志,孙莹,陈松乔.基于构件技术的报表系统的设计与实现.计算机应用研究,2003;9;88-907. 吴秀丽,孙树栋.基于设计模式的报表生成组件的设计与实现.计算机工程与应用,2004;16;113-115,118.8. 任中方,张华.mvc模式研究的综述.计算机应用研究,2004;10;1-4
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表