Java的三层结构开发

三层开发

在Java项目开发中,随着项目规模的增大,代码量随之增大,开发和维护的难度也会增加,因此我们需要一种低耦合、高内聚,可读性和可维护性好的开发方式,也就是三层开发模式

Java项目中的三层开发可以分为:

  • UI层:用户界面
  • 业务逻辑层:完成业务逻辑
  • 持久化层(数据层、Dao层):完成对数据库的操作功能

用户的指令以UI层为起点,发送命令到业务逻辑层,业务逻辑层完成整个指令的解析、利用持久化层的方法来完成整个指令

UI层


也就是用户所看到的界面,比如说一个简单的学生信息管理系统,用户所看到的界面如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtc7yCaK-1673268524139)(C:\Users\李文波\AppData\Roaming\Typora\typora-user-images\image-20230109200553012.png)]

用户可以根据自己的需求来操作界面,界面会根据用户输入的信息(比如用户选择2,根据编号查找年级),将用户输入的内容发送到业务逻辑层,由业务逻辑层进行接下来的操作:

case 2:
          System.out.print("请输入需要查找的年级编号:");
          id = input.nextInt();
          Grade grade = gradeService.getGradeById(id);//调用了业务层的gerGradeById()方法
          System.out.println(grade);

          System.out.println("按任意键继续...");
          line = input.nextLine();
          line = input.nextLine();
          continue;

业务逻辑层


业务逻辑层会接收到UI层发送过来的指令,刚才UI层发送过来的指令:

Grade grade = gradeService.getGradeById(id);//调用了业务层的gerGradeById()方法

会在业务逻辑层来执行:

@Override
    public Grade getGradeById(int id) {
        return gradeDao.getGradeById(id);//调用了持久层(数据层、Dao层)的getGradeById()方法
    }

我们可以看到,业务逻辑层完成这个指令其实是依赖持久层(数据层、Dao层)的方法来实现的

持久层(数据层、Dao层)


当业务逻辑层调用了持久层的方法之后,持久层会访问数据库来进行增删改查操作完成对应请求;

/*
     * @Author: 钢铁豪侠胡图图
     * @Date: 2023/1/9 11:22
     * Description: 根据传入id查询Grade表中的数据
     * @return: Grade对象
     */
    @Override
    public Grade getGradeById(int id) {
        Grade grade = new Grade();

        String sql = "select * from grade where gradeid = ?";
        Connection conn = DBUtil.getConnection();
        PreparedStatement ppstmt = null;
        ResultSet rs = null;

        try {
            //执行SQL查询语句并使用rs接收
            ppstmt = conn.prepareStatement(sql);
            ppstmt.setObject(1, id);
            rs = ppstmt.executeQuery();

            //遍历结果集
            while (rs.next()) {
                //获取数据
                int gradeid = rs.getInt(1);
                String gradename = rs.getString(2);
                int state = rs.getInt(3);

                //封装到实体类
                grade = new Grade(gradeid, gradename, state);
                //如果报错,那么方法会返回最后的null
                return grade;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.closeAll(conn, ppstmt, rs);
        }
        return null;
    }

由此我们可以看到,真正的功能实现实际上是在持久层完成的

也就是说,用户使用三层结构的系统发送一条指令,可以拆分为三个步骤:

  1. 用户在UI层根据自己的需求来发送一条指令到业务逻辑层
  2. 业务逻辑层根据这条指令,调用持久层的方法来实现用户的需求,并返回数据给UI层,在系统中起到承上启下的作用
  3. 持久层会*封装对数据库进行操作的代码,供业务逻辑层调用,在系统中起到工具的作用

三层结构系统的开发步骤


1、编写实体类entity

因为我们系统的功能归根结底还是对数据库中的表进行操作,因此,我们需要将数据库中的一张张表进行实体化:

比如说:假设我们需要向student学生表中添加一个学生的信息,那么把name、id、age、sex…等一条条属性罗列出来进行添加显然可读性不高,也不符合Java面向对象开发的规则

所以我们需要创建一个Student学生类,将一个学生的所有信息封装到一个学生类的对象中传入到业务逻辑层和数据层(虽然在数据层还是会对该对象进行拆解),这样做的好处的符合我们面向对象开发的思想、提高了代码的可读性和可维护性。

2、编写数据层接口和接口的实现类

假设你要开发一个根据学号id查找学生的功能,那么需要一个方法去实现它,显然,这个方法的传入参数是学生id,返回值是一个Student对象,因此,可以先在数据层接口中定义一个这样的方法

因为是对Student表进行操作,所以我们将接口命名为StudentDao:

/**
 * @Author: 李文波
 * @Date: 2023/1/9 10:40
 * Description: 定义持久化接口,用于约束操作数据库的方法
 * 子类必须实现这些方法,企业开发中,会编写多个实现类
 * 用于解决不同数据库访问的问题
 * @return:
 */
public interface StudentDao {
    //查询所有学生信息,返回一个学生列表
    public List<Student> findAll();

    //根据id查找执行学生信息
    public Grade getStudentById(int id);
}
public Student findById(int id);

这样做的意义是:可以先在接口中定义数据层的顶层逻辑框架,定义完框架之后程序员只需要根据这个接口中的方法来一个个去实现增删改查的数据库操作功能,将逻辑和代码分开,达到项目解耦的效果

然后我们只需要在相应实现类中实现这样的方法就行

实现类的命名叫做StudentDaoImpl,impl是实现类的意思

3、编写业务逻辑层的接口和实现类

业务逻辑层接口中的方法和Dao层如出一辙

public interface StudentService {
     //查询所有学生信息,返回一个学生列表
    public List<Student> findAll();

    //根据id查找执行学生信息
    public Grade getStudentById(int id);
}

但是同一个方法getStudentById(int id)

在Dao层的含义是:在数据库中根据id值来查找学生信息

在业务逻辑层的含义是:使用StudentDaoImpl这个工具来完成**根据id查找学生信息的功能**

public class StudentServiceImpl implements StudentService {
    StudentDao  studentDao = new  StudentDaoMysqlImpl();

    @Override
    public List<Student> find() {
    	//业务逻辑代码......
        return  studentDao.find();
    }

    @Override
    public  Student get StudentById(int id) {
    	//业务逻辑代码......
        return studentDao.get StudentById(id);
    }
}

和Dao层最大的不同是,业务逻辑层中多了业务逻辑代码部分,也就是说它不光是能通过使用StudentDaoImpl数据层完成查找功能,它还能根据查找出来的结果进行一系列的业务逻辑操作,比如该学生是不是跟别人重名、有没有考试不及格…等

3、UI层开发

。。。。。。因为博主本人能力所限,目前还只能通过控制台开发UI

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java三层架构是一种常见的软件开发架构,它将应用程序分为三个主要的层:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。下面是Java三层架构的开发流程的一般概述: 1. 确定需求:明确软件系统的需求和功能,包括用户界面、业务逻辑和数据存储等方面。 2. 设计表示层:设计用户界面,通常使用Java的GUI库(如Swing或JavaFX)或Web开发框架(如Spring MVC或JSF)来实现用户与系统的交互。 3. 设计业务逻辑层:在业务逻辑层中实现系统的核心业务逻辑。这一层通常包括处理用户请求、验证和处理数据、调用外部服务或资源等。 4. 设计数据访问层:在数据访问层中定义和管理与数据库或其他数据源的交互。这一层主要负责数据的读取、写入和持久化,通常使用Java的持久化框架(如Hibernate或MyBatis)来简化数据库操作。 5. 实现各层功能:根据设计,分别实现表示层、业务逻辑层和数据访问层的功能。可以采用面向对象编程(OOP)的原则来组织代码,实现功能模块的封装和复用。 6. 单元测试:编写单元测试用例,对各个层的功能进行测试,确保代码的正确性和可靠性。 7. 集成测试:将各个层的功能组合在一起进行集成测试,验证系统的整体功能和性能。 8. 部署和发布:将开发完成的系统部署到生产环境中,进行最终的测试和发布。 9. 维护和优化:监控和维护已发布系统,修复 bug、添加新功能,并对性能进行优化。 这只是一个一般的开发流程概述,具体的开发流程可能因项目规模、团队协作方式和技术选型等因素而有所不同。但是,以上流程可以作为一个指导,帮助您在Java三层架构下进行软件开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值