在JAVA我經常使用這種模式:爪哇聽者除去
class A{
void addListener(Listener obj);
void removeListener(Listener obj);
}
class B {
private A a;
B(A a){
this.a=a;
a.addListener(myListener)
}
private final myListener=new Listener(){
void listener();
}
public void dispose(){
a.removeListener();
}
}
通常A表示的數據集和B需要通過添加監聽到對象A,以這樣做是在A中的數據的變化作出反應當一個新的B實例被構造時。
由於對象a存在於A之外,因此此方法迫使我創建一個dispose()方法,該方法將偵聽器從對象a中移除。
雖然我知道精心設計的JAVA代碼通常不需要dispose()方法。 這種模式是一種糟糕的設計嗎?你能否提出其他方法?
在此先感謝您的幫助。
這可能是相關的:http://stackoverflow.com/questions/171952/is-there-a-destructor-for-java –