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

作者: guestid (訪客ID)   2012-01-01 20:20:07
最近在看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阿?
因為我對這個不是很懂, 不知道這樣表達各位是不是看的懂我要表達的意思

Links booklink

Contact Us: admin [ a t ] ucptt.com