问题背景

原始Login类同时承担界面展示、登录校验、数据库连接、用户查询、程序入口多重职责,功能高度耦合,违反单一职责原则(一个类只负责一类功能),修改某部分功能易影响其他模块。

重构思路

按职责拆分,分为 4 个独立类:

  1. LoginView:负责界面初始化、展示
  2. UserService:负责登录业务校验
  3. DBConnection:负责获取数据库连接
  4. UserDao:负责数据库用户查询主类仅负责流程调用。

代码实现

import java.sql.Connection;

// 1.界面类:界面初始化与展示
class LoginView {
    public void init() {}
    public void display() {}
}

// 2.数据库工具类:获取连接
class DBConnection {
    public Connection getConnection() {
        return null;
    }
}

// 3.数据访问类:查询用户
class UserDao {
    private DBConnection db = new DBConnection();
    public boolean findUser(String userName, String userPassword) {
        return true;
    }
}

// 4.业务校验类:登录验证
class UserService {
    private UserDao userDao = new UserDao();
    public boolean validate(String userName, String password) {
        return userDao.findUser(userName, password);
    }
}

// 主程序入口类
public class Login {
    public static void main(String[] args) {
        LoginView view = new LoginView();
        UserService service = new UserService();
        view.init();
        view.display();
    }
}

更多推荐