oop – 如何使用回调时如何避免循环依赖?
发布时间:2020-12-13 20:24:13 所属栏目:百科 来源:网络整理
导读:当您设计两个具有生产者/消费者关系的课程时,如何避免循环依赖?这里ListenerImpl需要引用Broadcaster才能注册/注销自己,而Broadcaster需要一个引用回侦听器才能发送消息.这个例子是 Java,但它可以应用于任何OO语言. public interface Listener { void callB
当您设计两个具有生产者/消费者关系的课程时,如何避免循环依赖?这里ListenerImpl需要引用Broadcaster才能注册/注销自己,而Broadcaster需要一个引用回侦听器才能发送消息.这个例子是
Java,但它可以应用于任何OO语言.
public interface Listener { void callBack(Object arg); } public class ListenerImpl implements Listener { public ListenerImpl(Broadcaster b) { b.register(this); } public void callBack(Object arg) { ... } public void shutDown() { b.unregister(this); } } public class Broadcaster { private final List listeners = new ArrayList(); public void register(Listener lis) { listeners.add(lis); } public void unregister(Listener lis) {listeners.remove(lis); } public void broadcast(Object arg) { for (Listener lis : listeners) { lis.callBack(arg); } } }
我不认为这是循环依赖.
听众什么也没有. ListenerImpl取决于监听器和广播者 广播者依赖于听众. Listener ^ ^ / / Broadcaster <-- ListenerImpl 所有箭头在侦听器结束.没有循环.所以,我想你没事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读