觀察者模式

觀察者模式:定義了對象之間的一對多的依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知並自動更新。

其實在軟件開發的過程中,這種模式最常見,典型的就是事件監聽。

先是實現監聽接口,然後註冊:

public abstract class MyDialog extends Dialog implements View.OnClickListener {

public void onClick(View v) {

}

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.about);

MyImageView back=(MyImageView)findViewById(R.id.aboutBack);

back.setAmation(Amation.inward);

back.setOnTouchListener(this);

}

}

這裏的MyDialog就是一個觀察者,而back就是主題。

通過這個模式剛好能解決我現在遊戲中的一個問題:

假設現在有三個遊戲界面 1、2、3;這也是界面的彈出順序,並且都不消失。

在第一和第二個界面上都有金錢數量的顯示,但是第三個界面出來以後(比如說某成就達成)使得實際的金錢數量改變了,當你點擊第三個界面的back按鈕離開時要更新第一和第二的界面上金錢的顯示數量。

這時我就像到了這個觀察者模式。

具體的實現就是 定義一個觀察者接口 供有顯示金錢數量的界面實現作爲觀察者,然後在寫一個單利類作爲主題,在創建觀察者的時候調用主題的註冊方法,銷燬觀察者的時候移除觀察者,然後在金錢改變的時候調用主題的更新方法。那麼這兩個界面就會更新金錢顯示的數量了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章