public abstract class Handler {
protected Handler chain;
public void next(Handler handler){
this.chain = handler;
}
public abstract void doHandle(Member member);
}
public class ValidateHandler extends Handler {
public void doHandle(Member member) {
{
//参数校验
//...
}
chain.doHandle(member);
}
}
public class LoginHandler extends Handler {
public void doHandle(Member member) {
{
//用户数据匹配
//...
}
chain.doHandle(member);
}
}
public class AuthHandler extends Handler {
public void doHandle(Member member) {
{
//权限校验
//...
}
}
public class Chain {
public void login(String loginName,String loginPass){
Handler validateHandler = new ValidateHandler();
Handler loginHandler = new LoginHandler();
Handler authHandler = new AuthHandler();
validateHandler.next(loginHandler);
loginHandler.next(authHandler);
validateHandler.doHandle(new Member(loginName,loginPass));
}
}
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(64);
public abstract class Handler<T> {
protected Handler chain;
public void next(Handler handler){
this.chain = handler;
}
public abstract void doHandle(Member member);
public static class Builder<T> {
private Handler<T> head;
private Handler<T> tail;
public Builder<T> addHandler(Handler<T> handler) {
if (this.head == null) {
this.head = this.tail = handler;
return this;
}
this.tail.next(handler);
this.tail = handler;
return this;
}
public Handler<T> build() {
return this.head;
}
}
}
public class Service {
public void login(String loginName,String loginPass){
Handler.Builder builder = new Handler.Builder();
builder.addHandler(new ValidateHandler())
.addHandler(new LoginHandler())
.addHandler(new AuthHandler());
builder.build().doHandle(new Member(loginName,loginPass));
}
}
public abstract class Handler<T> {
protected Handler chain;
private void next(Handler handler){
this.chain = handler;
}
...
}