观察者模式实现登录校验java
时间: 2024-09-13 13:04:16 浏览: 15
观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会收到通知并自动更新。在Java中,观察者模式可以通过实现`java.util.Observable`类和`java.util.Observer`接口来实现。
在实现登录校验的场景中,可以将登录过程视为被观察的事件,而校验逻辑则作为观察者。当登录事件发生时,所有注册的校验观察者将接收到通知,并执行相应的校验逻辑。
以下是一个简化的例子:
```java
import java.util.Observable;
import java.util.Observer;
// 被观察者,代表登录过程
public class LoginService extends Observable {
private String username;
private String password;
// 模拟登录过程
public void login(String username, String password) {
this.username = username;
this.password = password;
setChanged(); // 标记状态已改变
notifyObservers(); // 通知所有观察者
}
// 获取登录信息,供观察者使用
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
// 观察者,代表登录校验逻辑
public class UserAuthObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
if (o instanceof LoginService) {
LoginService loginService = (LoginService) o;
// 这里可以实现具体的校验逻辑
boolean isValidUser =校验登录信息(loginService.getUsername(), loginService.getPassword());
if (!isValidUser) {
// 校验失败的处理逻辑
System.out.println("登录失败,用户名或密码错误!");
} else {
// 校验成功的处理逻辑
System.out.println("登录成功!");
}
}
}
// 校验登录信息的伪代码
private boolean 校验登录信息(String username, String password) {
// 实现具体的校验逻辑
return true;
}
}
// 使用示例
public class ObserverPatternDemo {
public static void main(String[] args) {
LoginService loginService = new LoginService();
UserAuthObserver observer = new UserAuthObserver();
loginService.addObserver(observer);
// 模拟登录操作,触发校验逻辑
loginService.login("user", "pass");
}
}
```
在上述代码中,`LoginService`类是被观察的对象,它在登录操作发生时通知所有观察者。`UserAuthObserver`类是实现了`Observer`接口的观察者,它定义了登录事件发生时的响应逻辑。