网站首页  词典首页

请输入您要查询的论文:

 

标题 面向对象设计模式在数据批量处理过程中的研究与应用
范文

    戎小群

    

    

    

    摘要:在软件开发过程中,随着软件开发的进展,代码的冗余已经成为不可忽视的现象,这严重地影响软件开发的进度,同时也会造成系统维护的困难,因此代码是否精简直接影响应用系统的可维护性。该文通过具体的案例来说明,如何在恰当地应用面向对象设计模式的基础上,解决代码冗余的方法,以提高应用系统的可维护性。

    关键词:面向对象设计原则;模板方法模式;DAO模式;代码冗余

    中图分类号:TP311? ? ? ?文献标识码:A? ? ? 文章编号:1009-3044(2018)36-0227-03

    1 背景

    软件开发过程中,常常会伴随着代码冗余,它降低了软件应用系统的可维护性,从而影响软件应用系统开发效率。按照目前软件迭代开发的理论,软件开发需要首先完成初始可运行的版本,然后逐渐迭代,最终达到面向对象的设计目标,其中也包含了减少代码冗余。因此,在迭代过程中,需要仔细分析可能出现代码冗余的模块,通过设计技术手段,消除代码冗余,最终提高软件开发效率,确保软件系统的可维护性。

    该文就是讨论如何应用合适的面向对象设计模式,在实现数据批量处理过程中,消除代码冗余的方法。

    2 面向对象的设计

    2.1 面向对象设计目标

    可扩展性(Extensibility):可以将新功能添加到系统中。

    灵活性(Flexibility):在添加新功能代码的过程中,尽可能地减少修改量。

    可插入性(Pluggability):能将一个组件替换具有同样接口的另一个组件。

    2.2 面向对象的设计原则

    在常用的面向对象设计原则中,开-闭原则(The Open-Close Principle,OCP)是面向对象的可复用设计的基石,此外还有单一职责原则(The Single Responsiblity Principle,SRP)、Liskov替换原则(The Liskov Substitution Principle,LSP)、依赖倒置原则(The Dependency Inversion Pricinple,DIP)和接口隔离原则等。这些设计原则是实现“开-闭原则”的手段和工具。

    2.3 面向对象设计的具体思路

    1) 在客户端尽量采用面向抽象或接口编程;

    2) 高内聚,低耦合;

    3) 采用恰当的面向对象设计模式,以提高软件开发的效率,达到减少代码冗余的目的。

    2.4 面向对象的设计模式

    设计模式(Design pattern)是一套能被反复使用的代码设计经验的总结。它使代码编写真正实现了工程化,是软件工程的基石脉络。

    1) 数据访问对象(DAO)模式:主要用于软件架构的数据层,其主要功能为完成数据的编辑(添加、删除和修改)与查询。

    DAO模式通常需要VO(值对象),通常一个DAO对应一个VO对象。

    2) 模板方法模式:在父类中定义一个通用的操作,将其中一些具体功能延迟到子类中,从而在不改变原操作定义的条件下实现功能的扩展。

    模版方法模式通常由一个抽象类和若干个具体子类组成,抽象类中的方法分为三种:

    2.5 数据批量处理时的代码冗余现象

    信息管理应用系统在信息处理时,均会频繁地访问数据库,访问数据库的目的主要由如下几种形式:

    1) 往数据库添加数据;

    2) 修改数据库中的数据;

    3) 删除数据库中的数据;

    4) 查询数据库中的数据。

    在应用软件系统中,常用数据层来完成与数据库的交互,常常采用DAO(数据访问)模式。由于数据库的连接是一个“贵重”资源,因此,为了提高效率,常常要求一次连接能够完成批量数据的处理。那么如何才能高效地完成数据批量的处理(即,增删改查)?

    2.6 模板方法模式在批量数据处理中的应用

    2.6.1 案例

    假设数据库testdb中包含两个roles和users两个表对象。这两个表对象的结构如下:

    在对数据库中的表进行访问时,通常建立表与VO(值对象)类一一对应关系,如,以上两表各自建立一个JaveBean(Role和User)类,类中的属性分别对应表中的字段。同时分别创建两个访问两个表数据的DAO(RoleDAO和UserDAO)类。一旦数据库表的数量增加,相应的DAO也需要增加,代码的冗余将会产生;另外,即使对数据库中的一个表进行批量数据处理时(增删改查),也会出现代码的冗余。

    2.6.2 设计思路

    首先,解决批量数据处理时的编辑(即,增删改)操作所引起的代码冗余。

    在对数据库表进行编辑(增删改)操作时,所有与表对应的VO(值对象)类都附加一个操作码,以代表是何种编辑(增加、删除、修改)。由此,从VO类中抽象出一个所有VO类的共同父类AbstractData,此类为抽象类。如图2所示。

    <E:\电脑第36期\电脑第36期打包文件\8.7xs201836\Image\image55.png>

    圖2? ? VO类图

    通过应用模板方法模式,创建DAO类的父类AbstractDAO,该类为抽象类。如图3所示。

    AbstractDAO中的方法说明:

    1) 模板方法:

    protected final int addRecords(Connection conn, ArrayList<AbstractData>datas)

    protected final int deleteRecords(Connection conn, ArrayListdatas)

    protected final int updateRecords(Connection conn, ArrayList<AbstractData>datas)

    2) 抽象方法:

    如下的三个方法分别完成返回添加、删除和修改的SQL语句的功能。

    protected abstract String getAddSQL()

    protected abstract String getDeleteSQL()

    protected abstract String getUpdateSQL()

    如下的三个方法分别完成对象转化为记录的功能。

    protected abstract void handleAdd(PreparedStatementpstm, ArrayList<AbstractData>)

    protected abstract void handleDelete(PreparedStatementpstm, ArrayList<AbstractData>)

    protected abstract void handleUpdate(PreparedStatementpstm, ArrayList<AbstractData>)

    以上六个抽象方法,均由DAO子类实现。

    模板方法的代码示例如下:

    protected final int addRecords(Connection conn, ArrayList<AbstractData>datas){

    int count = 0;

    String sql = getAddSQL();

    try{

    PreparedStatementpstm = conn.prepareStatement(sql);

    handleAdd(pstm, datas);

    int[] amt = pstm.executeBatch();

    for(int i = 0; i < amt.length; i++){

    count += amt[i];

    }}catch(SQLException e){

    }finally{

    if(pstm != null){

    pstm.close();

    }}return count;

    }public String editRecords(ArrayList<AbstractData>datas){

    ArrayList<AbstractData>addList = new ArrayList<AbstractData>();

    …

    Connection conn = ConnectionFactroy.getConnection();

    int add = addRecords(conn, addList);

    …}

    DAO類的继承关系如图4所示。

    DAO类与VO类之间的关系如图5所示。

    3 结束语

    在进行软件开发的过程中,需要灵活恰当地应用设计模式,并将几种设计模式进行组合,在应用设计模式时,需要掌握设计模式的应用场合以及能解决什么开发问题。在应用设计模式时,要注意以下几个方面的问题:

    1) 不能在需求不明确时,确定设计模式;

    2) 不能为了设计模式而使用设计模式;

    3) 不能“生搬硬套”设计模式;

    4) 在迭代开发的过程中,完善与明确设计模式。

    参考文献:

    [1] 23种设计模式(6):模版方法模式[EB/OL].http://www.importnew.com/15546.html.

    [2] Alan Shalloway, James R Trott.设计模式解析[M]. 徐言声, 译.2版. 北京:人民邮电出版社, 2007(10).

    [3] 巴拉赫,兰宝. UML面向对象建模与设计[M].车皓阳,杨眉, 译. 2版.北京:人民邮电出版社, 2006(1).

    [通联编辑:谢媛媛]

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 5:49:37