我在想如果在方法參數中爲操作定義回調比在對象中定義它並通過設置器設置更差(涉及關於設計模式),那是更糟糕的。設計模式:作爲方法參數的回調
我不確定是否存在有關回調創建的設計模式。
例如,假設存在一些類A,並且我想通過一些回調執行一個方法M.
public class A {
public interface Callback {
void onEvent();
}
public static methodM(...) {
// ...
}
}
我可以做到這一點:
public static void methodM(Callback c) {
c.onEvent();
}
// ...
A.method(this); // The class that calls the method is the callback!
相反的:
public static void setCallback(Callback callback) {
this.callback = callback;
}
public static void methodM() {
this.callback.onEvent();
}
// ...
A.setCallback(this); // The class that calls the method is the callback!
A.method();
注意,該方法的事實是靜態的僅僅是簡單的場景理解。
那麼,我可以使用第一種方法作爲有效的設計嗎?
關於使用第一種情形的原因是爲了避免內存泄漏,以方便多個執行簡單的回調的定義,因爲我將不得不使用控制列表或者回調,觀察員的名單等
高度依賴於類和方法的意圖。沒有*一個*模式。 – dcastro 2014-10-28 11:32:11
我知道,過於通用,但我擔心第一種方法太壞/難以使用。由於我的回調是如此簡單的操作,我真的不想控制回調列表或類似的東西沒有需要。 – 2014-10-28 11:50:42