我搞砸了一些模式,使代碼更加模塊化。所以,我有這樣的事情:如何使用回調權限?
class A implements ICallback {
MyObject o;
B b = new B(this, someParameter);
@Override
public void callback(MyObject o){
this.o = o;
}
}
class B {
ICallback ic;
B(ICallback ic, someParameter){
this.ic = ic;
}
new Thread(new Runnable(){
public void run(){
// some calculation
ic.callback(myObject)
}
}).start();
}
interface ICallback(){
public void callback(MyObject o);
}
我不得不等待在A
MyObject
,所以我使用的callback
如果Thread
的B
工作完成通知A
。但現在我必須把所有的邏輯處理MyObject
和在callback
進一步處理。
我能否以某種方式避免或以正確的方式?
爲什麼你需要避免這種情況?有什麼理由嗎? – shazin
不清楚你想要做什麼以及要避免什麼。原則上,您的代碼是可以接受的,但請記住,A.callback()是從B中的線程調用的,所以如果您想從其他線程訪問A的字段,例如創建A實例的線程,那麼你需要添加一些同步。 –
我問過要避免這種情況,因爲我的整個程序依賴於MyObject。所以所有的工作都必須在這個回調中完成。 –