责任链模式 有感

来源:互联网 发布:一句话一个故事 知乎 编辑:程序博客网 时间:2024/06/11 13:00

     最近看netty 源码时看到有用到责任链模式,所以来学习下。 实现责任链模式代码后,觉得这个模式用的可能少, 但是用起来时基本上可能都是框架范畴的了吧。

    责任链模式的实现过程:链条嘛,就是一个传一个,在传的时候有一个人来负责处理客户提过来的请求吧。

    理解为:Client 有个 request  然后服务端 有个Handler来处理你的请求,Client 不需要知道你们是怎么处理的,我只要把请求发给你了,你处理好了跟我说就可以了。而对这个请求,服务端的Handler 处理者很多,每个处理者都有不同的范围,你处理不了丢给他吧,然后依次传下去,值到最后一个处理者。 

       如果用Java 来实现,可定需要设计两个类, Client 类,Handler类并提供 抽象方法暴露给Client 用,Handler 的继承者很实现自己不同权限的处理方法,如何把这个请求传递下去呢?所以Handler类里面有个 protected Handler successor属性 ,把处理不的事丢给successor,并且每个继承者可以设置他的successor是谁,这样责任链就成功实现了。 为了方便,可以用一个工厂方法来实例这些处理者,并设置他的successor是谁。


原创粉丝点击