责任链模式
public class ChainOfResponsibility {
public static void main(String[] args) {
Request request = new Request(false, true, true, true);
RequestFreHandler requestFreHandler = new RequestFreHandler(new LoginHandler(null));
if (requestFreHandler.process(request)) {
System.out.println("完成");
} else {
System.out.println("失败");
}
}
}
class Request {
private boolean login;
private boolean ok;
private boolean permit;
private boolean keyWord;
private String body;
public Request(boolean login, boolean ok, boolean permit, boolean keyWord) {
this.login = login;
this.ok = ok;
this.permit = permit;
this.keyWord = keyWord;
}
public boolean isLogin() {
return login;
}
public void setLogin(boolean login) {
this.login = login;
}
public boolean isOk() {
return ok;
}
public void setOk(boolean ok) {
this.ok = ok;
}
public boolean isPermit() {
return permit;
}
public void setPermit(boolean permit) {
this.permit = permit;
}
public boolean isKeyWord() {
return keyWord;
}
public void setKeyWord(boolean keyWord) {
this.keyWord = keyWord;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
abstract class Handler {
Handler next;
public Handler(Handler next) {
this.next = next;
}
public Handler getNext() {
return next;
}
public void setNext(Handler next) {
this.next = next;
}
abstract boolean process(Request request);
}
class RequestFreHandler extends Handler {
public RequestFreHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("访问频率");
if (request.isOk()) {
Handler next = getNext();
if (next == null) {
return true;
}
boolean process = next.process(request);
if (process) {
return true;
}
}
return false;
}
}
class LoginHandler extends Handler {
public LoginHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("登录");
if (request.isLogin()) {
Handler next = getNext();
if (next == null) {
return true;
}
if (next.process(request)) {
return true;
}
return true;
}
return false;
}
}