作者H45 (!H45)
看板java
标题Re: [问题] 请问java event的实现
时间Thu Mar 15 16:31:39 2007
※ 引述《scdog (just do it)》之铭言:
: public class A{
: private B b;
: public A(){
: b = new B();
: }
: }
: public class B{
: public B(){
: }
: public void doit(){
: }
: }
: 请问如何实现当class B自己发生doit()时, 通知class A发生了doit()事件
: 乾瞎!
这个问题像是:只要B的doit()被呼叫,就通知A
在class B的member field新增Class A的reference
然後在Class A的member method新增一个通知的方法
原程式码会变成
public class A{
private B b;
public A() { b = new B(); }
// new member method: "update" 用来处理要通知的事项
public void update(...) {
// TODO: 通知 A 的事项
}
}
public class B{
// new member field: "a" 作为要通知的对象
private A a;
public B() {}
public void doit() {
// 在此通知 A: "doit() 被呼叫了"
a.update(...);
}
}
如果要通知的物件太多,那麽可以考虑用一个容器去装
另外,如果太多物件都要进行通知的动作,那麽可以考虑进行一般化
而这就是Observer Pattern
http://java.sun.com/javase/6/docs/api/java/util/Observable.html
http://java.sun.com/javase/6/docs/api/java/util/Observer.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.205.85