观察者模式的使用

观察者模式是一对多(多对多)关系的模式。

User向EventManager注册了listener,事件触发Trigger类调用了EventManager的处理方法,Manager将事件加到队列中。嵌套类开启线程读取队列并逐一调用listeners中的处理方法。

实现伪代码:

Manager类:


public class EventManager {
private static List listeners = new ArrayList();
private static List queue = new LinkedList();
public void addListener(Class clazz) {
listeners.add(clazz);
}

public void trigger(Object obj) {
queue.add(obj);
}

public static class Solver extends Thread{
public void run() {
while (queue.size() > 0) {
Object obj = queue.getFirst();
for (Iterator iter = listeners.iterator();iter.hasNext()) {
User user = (User)iter.next();
user.invalid(obj);
}
queue.removeFirst();
}
}
}
}


User类:


public class User {
static {
EventManager.addListener(User.class);
}

public void invalid(Object obj) {
// do something
}
}


Trigger类:


public class Trigger {

public void discriminate() {
EventManager.trigger();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值