1700464370
1700464371
父亲的答复是:同意
1700464372
1700464373
––—母亲向儿子请示––-
1700464374
1700464375
母亲的请求是:我要出去逛街
1700464376
1700464377
儿子的答复是:同意
1700464378
1700464379
––—妻子向丈夫请示––-
1700464380
1700464381
妻子的请求是:我要出去逛街
1700464382
1700464383
丈夫的答复是:同意
1700464384
1700464385
––—母亲向儿子请示––-
1700464386
1700464387
母亲的请求是:我要出去逛街
1700464388
1700464389
儿子的答复是:同意
1700464390
1700464391
结果也正确,业务调用类Client也不用去做判断到底是需要谁去处理,而且Handler抽象类的子类可以继续增加下去,只需要扩展传递链而已,调用类可以不用了解变化过程,甚至是谁在处理这个请求都不用知道。在这种模式下,即使现代社会的一个小太妹穿越到古代(例如掉入时空隧道,或者时空突然扭转,甚至是突然魔法显灵),对“三从四德”没有任何了解也可以自由地应付,反正只要请示父亲就可以了,该父亲处理就父亲处理,不该父亲处理就往下传递。这就是责任链模式。
1700464392
1700464393
1700464394
1700464395
1700464397
设计模式之禅 16.2 责任链模式的定义
1700464398
1700464399
责任链模式定义如下:
1700464400
1700464401
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。)
1700464402
1700464403
责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果,其通用类图如图16-4所示。
1700464404
1700464405
1700464406
1700464407
1700464408
图16-4 责任链模式通用类图
1700464409
1700464410
责任链模式的核心在“链”上,“链”是由多个处理者ConcreteHandler组成的,我们先来看抽象Handler类,如代码清单16-14所示。
1700464411
1700464412
代码清单16-14 抽象处理者
1700464413
1700464414
public abstract class Handler{
1700464415
1700464416
private Handler nextHandler;
1700464417
1700464418
//每个处理者都必须对请求做出处理
1700464419
[
上一页 ]
[ :1.70046437e+09 ]
[
下一页 ]