设计模式实现用户登陆功能包括UserController类,UserService类,UserDao,UserSerceImpl类,UserDaoImpl类,User类 编写java代码
时间: 2024-09-12 07:00:39 浏览: 45
在设计一个简单的用户登录功能的Java代码中,我们可以使用几种设计模式,如工厂模式、依赖注入等。这里是一个简化的例子,展示了如何创建一个模块化的设计结构:
```java
// 用户实体类 User
class User {
private String username;
private String password;
// 构造函数、getter和setter省略
public boolean validateLogin(String attemptedPassword) {
return this.password.equals(attemptedPassword);
}
}
// 抽象DAO接口 UserDao
interface UserDao {
User getUserByUsername(String username);
}
// Dao实现 UserDaoImpl
class UserDaoImpl implements UserDao {
// 实现数据库查询逻辑
@Override
public User getUserByUsername(String username) {
// 调用数据库操作获取用户
// 这里只是模拟,实际应用会连接数据库
if (username == "admin" && "adminpassword".equals(password)) {
return new User("admin", "adminpassword");
} else {
return null;
}
}
}
// UserService接口
interface UserService {
User authenticate(String username, String password);
}
// Service的具体实现 UserServiceImpl
class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User authenticate(String username, String password) {
User user = userDao.getUserByUsername(username);
if (user != null) {
return user.validateLogin(password) ? user : null; // 验证密码是否匹配
} else {
return null;
}
}
}
// UserController类负责用户登录逻辑
class UserController {
private UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
public User login(String username, String password) {
return userService.authenticate(username, password);
}
}
// 主程序入口
public class Main {
public static void main(String[] args) {
UserDao userDao = new UserDaoImpl();
UserService userService = new UserServiceImpl(userDao);
UserController controller = new UserController(userService);
User loggedUser = controller.login("admin", "adminpassword"); // 尝试登录
if (loggedUser != null) {
System.out.println("Login successful!");
} else {
System.out.println("Invalid credentials.");
}
}
}
```
在这个示例中,`UserController`依赖于`UserService`,而`UserService`又依赖于`UserDao`,这就是依赖注入。当需要登录用户时,通过`login`方法传递用户名和密码,并返回验证结果。
阅读全文