责任链模式将处理对象像一条长链一样链接起来,形成一条对象链。
以创建用户为例,需要检查输入内容,验证用户是否存在及权限登,还要保存用户及其它处理。可以通过责任链模式将代码解耦
接口
public interface UserService {
boolean addUser(String name, String pwd);
}
检查输入信息
/**
* 检查输入信息
*/
public class CheckUserService implements UserService {
private UserService userService;
public CheckUserService(UserService userService) {
this.userService = userService;
}
@Override
public boolean addUser(String name, String pwd) {
System.out.println("检查输入信息, name=" + name);
if(StringUtil.isEmpty(name) || StringUtil.isEmpty(pwd)) {
return false;
}
return userService.addUser(name, pwd);
}
}
验证用户合法性
/**
* 验证权限或是否存在
*/
public class VerificationUserService implements UserService {
private UserService userService;
public VerificationUserService(UserService userService) {
this.userService = userService;
}
@Override
public boolean addUser(String name, String pwd) {
System.out.println("验证权限或是否存在, name=" + name);
// 逻辑判断
return userService.addUser(name, pwd);
}
}
存储用户信息
/**
* 保存用户信息
*/
public class SaveUserService implements UserService {
@Override
public boolean addUser(String name, String pwd) {
System.out.println("保存用户信息, name=" + name);
return true;
}
}
使用
public static void main(String[] args) {
UserService userService = new CheckUserService(new VerificationUserService(new SaveUserService()));
userService.addUser("zhangsan", "pwd");
}
运行代码输出
如果有耗时任务,并且不需要等待结果还可以将每个环节放入队列,采用其它线程独自运行