當我們在執行某些程式(例如網路連線、複雜運算…等), 並不知道甚麼時候會結束,
因此會希望在結束的時候, 通知某些程式做某些事情。
舉個簡單的例子,
假設現在我們宣告一個Button, 當使用者按下Button的時候, 我們就會去執行一些程式,
這就是一個標準的觀察者模式。
Buttton button = new Button();
button.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//do something
}
});
如果是要自己實作的話, 其實也不難,
首先建立一個interface,
public interface OnClickListener{
public void onClick();
}
接著在自己的類別實作這個介面
public class MyButton{
private OnClickListener mOnClickLitener;
public void setOnClickLitener(OnClickListener listener){
mOnClickLitener = listener;
}
public void pushDownButton(){
if(mOnClickLitener != null){
mOnClickLitener.onClick();
}
}
}
這樣一來只要呼叫pushDownButton這個方法,就會觸發事件。
在主程式試看看。
public class ListenerDemo{
public static void main(String[] args){
MyButton mButton = new MyButton();
mButton.setOnClickLitener(new OnClickListener(){
public void onClick(){
System.out.println("button is clicked.");
}
});
mButton.pushDownButton();
}
}
這樣一來只要button呼叫pushDownButton, 就會call OnClickListener的onClick方法。
這就是觀察者模式的雛型。