使用多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
- /**
- * 责任链模式
- * 类型:行为型
- * 描述:使用多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
- */
- public class ConcreteMode {
-
- // 具体处理者
- static class ConcreteHandler extends Handler {
- public ConcreteHandler(String name)
- {
- super(name);
- }
- public void handleRequest(Request request)
- {
- System.out.println(this.name + "处理了:" + request.getName());
- }
- }
-
- // 请求
- static class Request {
- private String name;
- public Request(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return name;
- }
- }
-
- // 处理者
- static abstract class Handler {
- private Handler nextHandler;
- String name;
- public Handler(String name)
- {
- this.name = name;
- }
- public void setNextHandler(Handler nextHandler)
- {
- this.nextHandler = nextHandler;
- }
- public void handleRequest(Request request)
- {
- if (this.nextHandler != null)
- {
- this.nextHandler.handleRequest(request);
- }
- }
- }
-
- // 客户端
- public static void main(String[] args)
- {
- // 创建请求
- Request request = new Request("小明");
- // 创建处理者
- Handler handler1 = new ConcreteHandler("张三");
- Handler handler2 = new ConcreteHandler("李四");
- Handler handler3 = new ConcreteHandler("王五");
- // 设置处理者链
- handler1.setNextHandler(handler2);
- handler2.setNextHandler(handler3);
- // 处理请求
- handler1.handleRequest(request);
- }
- }