设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 责任链模式(Chain of Responsibility)
在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
一、说明:
1、Handler 处理者(接口);
2、AbstractHandler 处理者(抽象类);
3、MyHandler 处理者.实现类。
二、Java实现,代码如下:
1、Handler
package com.java.designPattern.chainOfResponsibility;
/**
* 处理者 - 接口
*
*/
public interface Handler {
/**
* 操作
*/
public void operator();
}
2、AbstractHandler
package com.java.designPattern.chainOfResponsibility;
/**
* 处理者 - 抽象类
*
*/
public abstract class AbstractHandler {
private Handler handler;
/**
* 获取下一个处理者
* @return
*/
public Handler getHandler() {
return this.handler;
}
/**
* 对下一个处理者的引用
* @param handler
*/
public void setHandler(Handler handler) {
this.handler = handler;
}
}
3、MyHandler
package com.java.designPattern.chainOfResponsibility;
/**
* 处理者 - 实现类(核心)
*
*/
public class MyHandler extends AbstractHandler implements Handler {
private String name;
public MyHandler(String name) {
this.name = name;
}
@Override
public void operator() {
System.out.println(name + " : operator!");
if (getHandler() != null) {
System.out.println(name + " : I'm busy. next !");
getHandler().operator();
} else {
System.out.println(name + " : deal !");
}
}
}
4、Test
package com.java.designPattern.chainOfResponsibility;
/**
* 测试类
*
*/
public class Test {
public static void main(String[] args) {
MyHandler myHandlerA = new MyHandler("A");
MyHandler myHandlerB = new MyHandler("B");
MyHandler myHandlerC = new MyHandler("C");
myHandlerA.setHandler(myHandlerB);
myHandlerB.setHandler(myHandlerC);
myHandlerA.operator();
}
}
输出:
A : operator!
A : I’m busy. next !
B : operator!
B : I’m busy. next !
C : operator!
C : deal !