[原]责任链模式

[关键字]:java,design pattern,设计模式,《Java与模式》,Chain of Responsibility,责任链模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:


package pattern.chainofresponsibility;

/**
 * 责任链模式:Chain of Responsibility
 * @version 2009-5-9
 * @author Winty(wintys@gmail.com)
 */
public class ChainOfResponsibilityTest{
    public static void main(String[] args){
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();

        //设置责任链
        handler3.setSuccessor(handler2);
        handler2.setSuccessor(handler1);

        //发送命令
        handler3.handleRequest();
    }
}

/**
 *抽象处理者
 */
abstract class Handler{
    protected Handler successor;

    public Handler getSuccessor(){
        return successor;
    }

    public void setSuccessor(Handler successor){
        this.successor = successor;
    }

    public abstract void handleRequest();
}

/**
 *具体处理者
 */
class ConcreteHandler1 extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete1");
            System.out.println(" to class" + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler1");
        }
    }
}

/**
 *具体处理者
 */
class ConcreteHandler2  extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete2");
            System.out.println(" to class " + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler2");
        }
    }
}

/**
 *具体处理者
 */
class ConcreteHandler3  extends Handler{
    public void handleRequest(){
        if(getSuccessor() != null){
            System.out.print("Request passed:from class Concrete3");
            System.out.println(" to class " + getSuccessor().getClass().getName());

            getSuccessor().handleRequest();
        }
        else{
            System.out.println("Request handled in ConcreteHandler3");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值