[模式] Observer Pattern 模式的一些問題

看板OOAD作者 (訪客ID)時間12年前 (2012/01/01 20:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
最近在看Head First Design Pattern這本書的Observer Pattern (新手不是很懂) 書中有提到Java中內建的Observable及Observer可用來實作Observer Pattern Subject class A 要繼承(extends) Observable class Observer class B 要實作 Observer 這個interface 問題一: 本版精華區的範例中沒有下面註解的那兩行, 書上卻多了這兩行, 目的何在? public class B implements Observer { Observable obs; // 為什麼要有這行???? public B(Observable obs) { this.obs = obs; // 還有這行???? obs.addObserver(this); } } 自問自答: 不要這兩行也可以 為了讓class B 可以自己unregister , 不再observe 就需要這兩行 問題二: 聽說interface 如 KeyListener、ActionListener,...等也是Observer Pattern 似乎實務上在實作這類interface時, 好像都沒有人去實作建構子(像問題一這樣), 而是類似下面這樣做: public class myActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } 自問自答: 因為要保持彈性, 讓Subject在需要時再以addActionListener(ActionListener a)去 註冊即可(是嗎= = 這個回答自己都覺得有點勉強) 問題三: 我如果要在問題二中的myActionListener加個建構子(像問題一這樣), 要怎麼加呢? 就用Observable當引數的型別? 還是用ActionEvent? 還是用Button >"< 到底誰是Subject阿? 因為我對這個不是很懂, 不知道這樣表達各位是不是看的懂我要表達的意思 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.73.64.16
文章代碼(AID): #1F04zvoP (OOAD)
文章代碼(AID): #1F04zvoP (OOAD)