Re: [問題] 將callback轉型成原本的class
※ 引述《liu2007 (薯)》之銘言:
: 我想要強調的是這個Class A 有public 的 getter & setter
: 今天我預設之下把Class A 的instance pointer 給某個Class B 使用是允許的。
: 可是很不巧某個Class C 也會用到 Class A 的某些public method 或是額外的東西,
: 只不過這個Class C 我不希望他會去使用到Class A 的 getter & setter,也就是說我不
: 希望Class C 透過 getter & setter動到我 Class A 的某些東西。
: 我過去要完成這樣的想發都是先寫一個 interface
: public interface SpecialCallback{
: public void doSomethingSpecial();
: }
: 然後
: public class A implements SpecialCallback{
: //略
: }
: 在 Class C 裡面藏一個 field
: public class C {
: private SpecialCallback mCallback;
: public C (SpecialCallback callback){
: this.mCallback = callback;
: }
: public void method(){
: .
: .
: mCallback.doSomethingSpecial();
: .
: .
: }
: }
: 然後 new C的時候把 A 的instance pointer帶進去
^^^^^^^^
就說沒有指標了
我後來很害怕這種 reference 傳來傳去的,算是一種強迫症吧
雖然很多時候很直白好用 XD
後來就用... ㄟ... 我不知道這有沒有 pattern 名稱
還是叫做 event-driven 還是三小... 隨便啦
在 GWT 當中,有個東西叫做 event bus
簡單地說,就是你上頭的 doSomethingSpecial() 改成
//somewhere...
public static HandlerManager eventBus = new HandlerManager(null);
//在 method() 中
eventBus.fireEvent(new SomethingSpecialEvent());
然後 A 裡頭就
eventBus.addSomethingSpecialHandler(
new SomethingSpecialHandler() {
onFire() {
this.doSomethingSpecial();
}
}
}
你看,這樣是不是很快樂呢?
程式碼足足多了五六倍,因為上頭還沒有宣告 __Event 跟 __Handler
超華麗的呢...... 而且我不知道 JDK 有沒有內建這類機制的 class 可以用 \囧/
這一定可以解決你的問題
雖然他真正的目標(應該)並不是解決你的問題 [逃]
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.17.110
→
10/14 15:01, , 1F
10/14 15:01, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 9 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章