Re: [問題] 請問java event的實現
※ 引述《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
討論串 (同標題文章)