最近在看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阿?
因为我对这个不是很懂, 不知道这样表达各位是不是看的懂我要表达的意思