没有用过,看了看API我觉得是这么调用的:A a = new A();
B b1 = new B();
B b2 = new B();
a.addObserver(b1);
a.addObserver(b2);在A的run方法中,当条件符合时
调用a.notifyObservers();Observer这个设计模式的做法就是当被观察者(A)改变时由被观察者通知观察者(B)自身的变化
因此是由A来调用B的update()方法的
B b1 = new B();
B b2 = new B();
a.addObserver(b1);
a.addObserver(b2);在A的run方法中,当条件符合时
调用a.notifyObservers();Observer这个设计模式的做法就是当被观察者(A)改变时由被观察者通知观察者(B)自身的变化
因此是由A来调用B的update()方法的
不想B被A自动调起的话
为什么还用Observer模式呢?
我记得这本身就是订阅-发布机制啊那么你是不想让B随A的变化而更新了?
那你打算什么时候对B进行修改呢?
如何让B知道A有哪些变化了呢?
又由谁来调起B呢?
在第一个方法中调用A a =new A;a.start()此时不要a.addObserver(b);
在你想调用B时再用a.addObserver(b);
这样可以完成操作:P
我写了一个线程A用于不停的接收信息并放到一个list中去,
observer类:B implements Observer{}用于判断list是否为空,空则等待,否则从list中取出一条放入hashmap中,这样不妥吗?
如果不这样,那有什么好的方法吗?谢谢!
sci_fi的办法可以,但我不明白原因!
如果使用轮询机制,必然很影响性能
可以当A接收到消息放入list中之后,就去向B发出通告如果A和B两个类分别只有一个实例的时候,也可以直接由A转发给B,但这样扩展性不好还有一种方法是,A接收消息然后放入list中去,B设置一个定时器,隔一段时间启动一次B去检查list,此时A和B之间没有什么联系,他们都只与list交互我想这三种方法都可以个人认为,如果使用后两种的话,就没有必要去使用Observer和Observable了 ^_^
这样行吗? 可是我写不出来代码?能告诉我怎么写吗?