您的位置:首页 > 编程语言 > Java开发

Java设计模式(二十二):职责链模式

2018-01-24 11:00 309 查看

职责链模式(Chain Of Responsibility Pattern)

职责链模式(Chain Of Responsibility Pattern):属于对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

职责链模式UML图



Java

职责链模式涉及的角色

抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。具体处理者(ConcreteHandler)角色:处理它所负责的请求,由于持有对下家的引用,所以可以访问它的后继者,如果可以处理该请求,就处理之,否则将该请求转发给它的后继者。

示例代码

抽象处理者 Handler



Java
具体处理者类 A ConcreteHandlerA



Java
具体处理者类 B ConcreteHandlerB



Java
客户端测试类 ChainOfResponsibilityPatternTest



Java

职责链模式的优点

客户端提交请求后,请求是沿着链传递直到有一个具体处理者对象处理它,这样做的好处是客户端可以不用管请求由哪个对象来处理。这使得接收者和发送者都没有对方的明确信息,且链中的对象自己也并不知道链的结构,结构是职责链可以简化对象的相互连接,它们只需保持一个对后继者的引用,而不需要保持它的所有候选接收者。从而大大降低了耦合度。但是也要注意的是职责链模式的具体处理是有末端的,也就是说会有请求得不到处理的情况,所以客户端在发送请求的时候需要注意是否有对应的具体处理者不能处理的情况。

Java学习资料获取(复制下段连接至浏览器即可)

data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

喜欢文章的可以关注小编 小编每天都会给大家更新哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息