抽象处理者
package ChainOfResponsibilityPattern.handler;
import ChainOfResponsibilityPattern.requester.Woman;
public abstract class Handler {
private String handleType;
private Handler nextHandler;
public Handler(String handleType) {
this.handleType = handleType;
}
public void handle(Woman woman){
if (woman.getType().equals(handleType)) {
response(woman);
}else {
if (this.nextHandler != null) {
nextHandler.handle(woman);
}else {
System.out.println("没人能处理这个请求...");
}
}
}
//对该请求的处理
public abstract void response(Woman woman);
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
}
具体处理者
package ChainOfResponsibilityPattern.handler;
import ChainOfResponsibilityPattern.requester.Woman;
public class FatherHandler extends Handler{
public FatherHandler() {
super("1");
}
@Override
public void response(Woman woman) {
System.out.println("女儿向父亲请示:");
System.out.println("女儿的请求是:"+woman.getQequest());
System.out.println("父亲的回答是:同意");
System.out.println();
}
}
package ChainOfResponsibilityPattern.handler;
import ChainOfResponsibilityPattern.requester.Woman;
public class HusbandHandler extends Handler{
public HusbandHandler() {
super("2");
}
@Override
public void response(Woman woman) {
System.out.println("妻子向丈夫请示:");
System.out.println("妻子的请求是:"+woman.getQequest());
System.out.println("丈夫的回答是:同意");
System.out.println();
}
}
package ChainOfResponsibilityPattern.handler;
import ChainOfResponsibilityPattern.requester.Woman;
public class SonHandler extends Handler{
public SonHandler() {
super("3");
}
@Override
public void response(Woman woman) {
System.out.println("母亲向儿子请示:");
System.out.println("母亲的请求是:"+woman.getQequest());
System.out.println("儿子的回答是:同意");
System.out.println();
}
}
请求者
package ChainOfResponsibilityPattern.requester;
public interface Woman {
public String shaonv = "1";
public String shaofu = "2";
public String guafu = "3";
public String getQequest();
public String getType();
}
package ChainOfResponsibilityPattern.requester;
public class WomanImpl implements Woman{
public String type;
private String request;
public WomanImpl(String type,String request){
this.type = type;
this.request = request;
}
public String getType() {
return type;
}
@Override
public String getQequest() {
return request;
}
}
客户端
package ChainOfResponsibilityPattern;
import ChainOfResponsibilityPattern.handler.FatherHandler;
import ChainOfResponsibilityPattern.handler.Handler;
import ChainOfResponsibilityPattern.handler.HusbandHandler;
import ChainOfResponsibilityPattern.handler.SonHandler;
import ChainOfResponsibilityPattern.requester.Woman;
import ChainOfResponsibilityPattern.requester.WomanImpl;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Handler fatherHandler = new FatherHandler();
Handler husbandHandler = new HusbandHandler();
Handler sonHandler = new SonHandler();
fatherHandler.setNextHandler(husbandHandler);
husbandHandler.setNextHandler(sonHandler);
Woman woman = new WomanImpl("3","我要逛街");
fatherHandler.handle(woman);
}
}