Chain of Responsibility模式疑问

04-03-25 myjirong
    

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

    

myjirong
2004-03-26 12:36

banq能指导一下吗?

如果我的任务即要传给A, 又要给B, 如何表明. 不要告诉我设二进制的标志位!

youngS
2004-03-26 13:08

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

happlyin
2004-03-26 17:03

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,是不符合职责链模式。

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

黑暗空间
2004-03-27 11:30

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

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