Java 三层架构开发流程详解

一、概述

三层架构(Three-Tier Architecture)是一种软件架构模式,通常由表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三部分组成。这个结构使得应用程序的开发更加模块化、易于维护和扩展。在本文中,我们将通过一个简单的示例,教会你如何实现 Java 中的三层架构。

二、开发流程

以下是实现 Java 三层架构的基本步骤:

步骤 说明
1 创建数据访问层(DAL)
2 创建业务逻辑层(BLL)
3 创建表示层(UI)
4 测试完整的应用程序

三、各步骤代码实现

1. 创建数据访问层(DAL)

数据访问层主要负责与数据库的交互。我们需要创建一个数据库连接和相应的数据访问方法。

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

// 数据访问层类
public class UserDAO {
    // 数据库连接信息
    private static final String URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USER = "root";
    private static final String PASSWORD = "password";
    
    // 获取数据库连接
    private Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
    
    // 插入用户
    public void addUser(String name, int age) {
        String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
        try (Connection conn = getConnection(); 
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, name); // 设置用户姓名
            pstmt.setInt(2, age);      // 设置用户年龄
            pstmt.executeUpdate();      // 执行插入操作
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // 查询用户
    public void getUser(int id) {
        String sql = "SELECT * FROM users WHERE id=?";
        try (Connection conn = getConnection(); 
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setInt(1, id);      // 设置查询用户ID
            ResultSet rs = pstmt.executeQuery(); // 执行查询
            if (rs.next()) {
                System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + ", Age: " + rs.getInt("age"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2. 创建业务逻辑层(BLL)

业务逻辑层负责处理业务逻辑,这部分会调用数据访问层的方法。

代码示例

// 业务逻辑层类
public class UserService {
    private UserDAO userDAO = new UserDAO();

    // 添加用户
    public void addUser(String name, int age) {
        if (name != null && age > 0) { // 简单的业务逻辑验证
            userDAO.addUser(name, age);
            System.out.println("用户添加成功!");
        } else {
            System.out.println("用户信息不合法!");
        }
    }

    // 查询用户
    public void getUser(int id) {
        userDAO.getUser(id);
    }
}

3. 创建表示层(UI)

表示层负责与用户交互,可以是一个简单的命令行界面。

代码示例

import java.util.Scanner;

// 表示层类
public class UserInterface {
    private UserService userService = new UserService();
    
    public void start() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("1. 添加用户");
            System.out.println("2. 查询用户");
            System.out.println("3. 退出");
            int option = scanner.nextInt();
            scanner.nextLine(); // 清空缓冲区

            switch (option) {
                case 1:
                    System.out.print("请输入用户名: ");
                    String name = scanner.nextLine();
                    System.out.print("请输入用户年龄: ");
                    int age = scanner.nextInt();
                    userService.addUser(name, age);
                    break;
                case 2:
                    System.out.print("请输入用户ID: ");
                    int id = scanner.nextInt();
                    userService.getUser(id);
                    break;
                case 3:
                    System.out.println("退出程序");
                    scanner.close();
                    return;
                default:
                    System.out.println("无效的选项,请重试!");
            }
        }
    }

    public static void main(String[] args) {
        new UserInterface().start(); // 启动用户界面
    }
}

4. 测试完整应用程序

我们可以在 UserInterface 类中进行用户测试,并确保所有功能正常。

四、状态图

下面是状态图,展示了三层架构中各层的状态转移:

stateDiagram
    [*] --> 表示层
    表示层 --> 业务逻辑层
    业务逻辑层 --> 数据访问层
    数据访问层 --> [*]

五、总结

通过上述步骤,我们实现了一个简单的 Java 三层架构应用程序,包括数据访问层、业务逻辑层和表示层。在实际开发中,三层架构的优势在于使代码组织更清晰,方便后期的维护和扩展。

在学习的过程中,可以尝试对实现的内容进行更深层次的理解,或者扩展功能以更好地掌握三层架构的精髓。希望这篇文章能对你有所帮助,不断实践,你会成为一名优秀的开发者。