设计模式之责任链


责任链模式,兄弟连兄弟会 www.itxdh.com 企鹅群:499956522 高端人才培养就到【兄弟连兄弟会】纯免费的高端IT人才培养


意图:


使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。


适用性:


有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。


你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。


可处理一个请求的对象集合应被动态指定。

[java] view plaincopy

public interface Handler {  

    public void operator();  

}  

[java] view plaincopy

public abstract class AbstractHandler {  

      

    private Handler handler;  

  

    public Handler getHandler() {  

        return handler;  

    }  

  

    public void setHandler(Handler handler) {  

        this.handler = handler;  

    }  

      

}  

[java] view plaincopy

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+"deal!");  

        if(getHandler()!=null){  

            getHandler().operator();  

        }  

    }  

}  

[java] view plaincopy

public class Test {  

  

    public static void main(String[] args) {  

        MyHandler h1 = new MyHandler("h1");  

        MyHandler h2 = new MyHandler("h2");  

        MyHandler h3 = new MyHandler("h3");  

  

        h1.setHandler(h2);  

        h2.setHandler(h3);  

  

        h1.operator();  

    }  

}  

输出:


h1deal!

h2deal!

h3deal!


此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。


转载于:https://my.oschina.net/u/2605164/blog/616521

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值