zoukankan      html  css  js  c++  java
  • 程序开发思路

    1.框架环境搭建:

      Spring+mybatis

    2.框架思路:

      MVC是web开发中常见的程序结构。

    ----------------------------------------------------------------------------------------------------------------------
      简单的mvc结构如下:
        view层:    显示层。
        control层:  业务层,集合了各种action。
        model层:   模型层,一般和数据打交道。简单的sample:一个表对应一个model类。
        其中control层调用model层的方法,实现对数据的访问。

      采用这样的结构在一定程度上,可以做到代码清晰,较容易扩展,代码的管理复杂度较低。
      但是如果是业务很多,逻辑又很复杂的网站,如果再加上开发人员的水平参差不齐,那必然会导致下面的情况:
      1 action中的代码越来越长,逻辑越来越复杂,不同action之间看起来有很多可以重用的代码, 但是真要进行重构的话,又非常困难。
      2 model层中包含的方法越来越多,有些方法也过于复杂。甚至在不少方法中还包含了业务逻辑。
      3 代码的修改,还是牵一发而动全身。
      4 代码难以进行自动化测试。

    ----------------------------------------------------------------------------------------------------------------------

    因此引入了DAO层对MVC架构进行了补充扩展:

      1.view层:显示层。
      2.control层:业务层,集合了各种action。
      3.service层。
      4.DAO层。
      原来的model层不见了,增加了service层和DAO层。DAO,即Data Access Object,数据访问接口,数据访问:顾名思义就是与数据库打交道。

      在这个结构中,control不直接和DAO联系,
      需要操作数据的时候,通过service层访问DAO层来实现。
      service层做的事情,不仅仅是调用DAO操作数据,还会包含了一定的业务逻辑。整个程序的设计,也变成了针对服务进行设计。

    这样做的好处是:
      1 control层中的action得以精简,因为action中的一些逻辑,被重构成一个个的服务。而不同的action也可以重用服务了。
      2 只负责和数据打交道的DAO层,相比之前的model层,也得以精简(DAO层尽量只做最原子的数据操作,不同数据操作之间的联系,这边不考虑,那是service层的事情)。
      3 service层可以实现很大程度上的代码复用,程序的功能封装更清晰了。
      4 由于service层更加清晰的定义了应用程序的边界,那么对于各个service函数(对应某个服务/应用),要做到自动化测试就方便多了。WEB程序如何做到能方便的进行单元测试,这是一直困扰我的难题,这样的设计似乎真的可行了~
      5 开发人员的工作分配,理论上真的可以按层次划分了。只是理论上~

    3.框架设计路径:

      1.DAO层设计:

        建立each table相关的DAO层文件,实现如下功能:

        add(User user)

        delect(User user)

        update(User user)

        queryAll

        queryById(String username)

      2.Service层设计:

        进行逻辑判断,实现功能

          /**************************login功能例举****************************/

          例如login功能:

            传入数据封装为User:userName,password

            以userName为参数进行queryById,返回值为null,则return false,否则return true

            判断user.getPassword()==queryById(userName).getPassword(),return true/false

          public boolean loginUser(User user) {
          //判断用户是否存在
            if(userDAO.queryById(user.getUsername()) == null) {
              return false;
            } else {
              User queryUser = userDAO.queryById(user.getUsername());
              if(queryUser.getPassword().equals(user.getPassword())) {
              return true;
              } else {
                return false;
              }
            }
          }

           /*******************************************************************/ 

     
  • 相关阅读:
    Ckeditor(4.5.5) language 语言切换
    利用array_slice进行手动分页
    PHP API 接口访问之签名验证
    mysql外键的一些总结
    缺货置顶功能(类似功能可参考)
    [Exchange2013] 无法正常发送存入草稿箱 或者 只能发不能收
    [Exchange]2个不同域之间互发邮件
    [Citrix NetScaler] 简述
    [转载] cookie、JS记录及跳转到页面原来的位置
    [XenServer] XenServer修改IP 以及 root密码
  • 原文地址:https://www.cnblogs.com/otio/p/4161757.html
Copyright © 2011-2022 走看看