zoukankan      html  css  js  c++  java
  • 程序设计分层思想和DAO设计模式的开发

            无论是一个应用程序项目还是一个Web项目,我们都可以按照分层思想进行程序设计。对于分层,当下最流行划分方式是:表现层+控制层+业务层+数据层。其中,业务层和数据层被统称为后台业务层,而表现层和控制层属于前台。整个项目最核心的部分就是后台业务层的实现。

             数据层:又被称为数据访问层(Data Access Object DAO),是专门完成一个个原子性操作的数据库开发,如对数据的更新(插入,修改,删除)和查询(单个查询,查询全部,模糊查询等),在数据层中最需要控制的就是JDBC的PreparedStatement接口的使用。

             业务层:又被称为业务对象(Business Object BO)、服务层(Service Object),它体现了整个程序提供的操作功能,一个业务层的操作实现,需要涉及多个数据层的操作。

             以下对员工表(emp)的操作为例,讲解数据层和业务层的实现

             首先员工表的结构:emp(empno,ename,job,hiredate,sal,comm),客户提出的对员工的需求可以大致划分为以下几个操作:

             1实现雇员数据的添加,保证雇员编号不重复

             2实现对雇员信息的修改

             3实现对雇员的批量删除

             4根据雇员编号查询指定雇员信息

             5查询所有雇员信息

             6模糊查询复合条件的雇员信息和统计人数

    我们以SQL Server数据库开发为例进行项目的开发

    准备阶段

          1数据库连接类DatabaseConnection

             因为涉及到对数据库开发操作,需要取得数据库的连接对象以及关闭,因此可以专门定义一个类管理数据库的连接与关闭,类的设计如图

                                    

          2简单Java类

    因为我们要操作的是指定表中的数据项,所以数据结构也必须要与表结构意义对应。简单java类(po,vo,pojo,to)

             注意在实际开发中,对简单java类有几点要求

    l           考虑到日后程序有可能出现分布式应用问题,所以简单java类必须要实现java.io.Serializable接口;

    l  简单java类的名称必须与表名称保持一致;

    有可能采用这样的命名:student_info 类名为StudentInfo

    l  类的属性不允许出现基本数据类型,都必须使用基本数据类型的包装类

    基本数据类型默认值为0,而包装类默认值为null;

    l  类中的属性必须使用private封装,封装后的属性必须提供有getter、setter方法

    l  类中可以有多个构造方法,但是必须有一个无参构造方法

    开发数据层     

    数据层最终是要交给业务层去调用,所以应该为数据层的操作指定标准,即应该定义数据层开发的接口标准。,这样业务层只需要通过接口即可实现数据层的访问,而无需知道操作细节。

    1开发数据层的操作标准

    l  对于整个数据层的开发严格讲就是只有两类功能:

    |-数据更新:建议它的操作方法以doXxx()形式命名

    |- 数据查询,对于查询分两种形式:

             |- 查询表中数据:以findXxx()形式命名,例如:findById(),findByName()

             |- 统计表中的数据:以getXXX()形式命名,例如:getAllCount()

     

    2数据层的实现类

    数据层需要被业务层调用,数据层需要进行数据库的执行(PreparedStatement),由于在实际开发之中一个业务要执行多个数据层的调用,所以数据库的打开与关闭由业务层负责比较合理

    3工厂模式提供对不同层间的访问接口

     

    package cn.mldn.factory;

    import java.sql.Connection;

    import cn.mldn.dao.IEmpDAO;

    import cn.mldn.dao.impl.EmpDAOImpl;

    public class DAOFactory {

             public static IEmpDAO getIEmpDAOInstance(Connection conn) {

                       return new EmpDAOImpl(conn);

             }

    }

     

     

    开发业务层

          1业务层操作标准

    2业务层实现类

             业务层实现类的核心功能:

    l  负责数据库的打开与关闭,当存在了业务层对象后就是为了操作数据库:即业务层之后就必须准备好数据库的连接;

    l  根据DAOFactory调用getIEmpDAOInstance()方法而后获取IEmpDAO接口对象

    不同层之间的访问依靠的就是工厂类和接口进行操作

     

    3业务层的工厂类

            

    在实际编写中,子类永远都是不可见的,同时在整个操作里面,控制层完全看不见数据库的任何操作(没有任何的JDBC代码)

    总结

    通过分层设计思想以及接口设计原则,我们可以将复杂的业务需求转变为一个个简单的分层业务处理,在设计中关键是对分层的程度进行控制,纪要保持类中内部的聚合性强,又要搜鞍山解耦类之间的联系,计量做到“松耦合强内聚”的设计架构准则。

  • 相关阅读:
    KMP的next
    关于codeblocks左边文件栏不见的问题
    数据结构第二章内容
    设置notepad++ 的 tab 设为4个空格和设置为中文语言
    字面量
    ..没什么
    今天做的HTML练习
    DAY 145 django的聚合函数和aggregate、annotate方法使用
    DAY 144 Math.round()/Math.ceil()/Math.floor()差异
    DAY 143 DRF-Django rest framework
  • 原文地址:https://www.cnblogs.com/gaochaochao/p/8350476.html
Copyright © 2011-2022 走看看