Chain of Responsibility模式疑问

比如我有机能A,B,C组成了一个Chain, 当我有一个任务在这个Chain中传递是, 如何表明是传给A的, 而不是给B的? 我见过用个int i 来表明的, i = 1时给A, 2时给B. 但觉的不好.

banq能指导一下吗?
如果我的任务即要传给A, 又要给B, 如何表明. 不要告诉我设二进制的标志位!

可不可以使用监听器?事件源发出一个事件,A/B/C接收这个事件,然后自己再根据需要决定是否处理该事件.

Chain of Responsibility模式中的职责链是通过一个引用来做到的。例如,现有一个接口I, A,B和C都实现了I,并且在A,B,C中都有一个对I的引用,这个引用表示就是职责链中的下一个处理者。

interface I {
public void do();
public I next();
}

public class A implements I{
privater I next = null;
//.......
}

public class B implements I{
privater I next = null;
//.......
}

public class C implements I{
privater I next = null;
//.......
}

然后在某个地方初始化这条职责链。

你说的哪个传给A又要传给B,是不符合职责链模式。

那需要广播功能,做一个监听器就可以了


你说的这种不是责任链,而是State模式。

Chain of Responsibility 是顺序执行的.前面有tbase的一个例子