設計模式之觀察者模式
生活:最近弄了臺準系統遊戲本,第一次接觸準系統這個概念。說白就是品牌機的私生子,都是乙個媽生的。然後私生子一般價效比都比原配的好。但私生子始終是私生子,是不會被品牌商認可的,沒保修滴,要修只能到賣家那。哥屌絲乙個,買電腦只能是想以最低的**買好的電腦了。保修之類的,i dont care。最後,入手的本本不錯,甚是喜歡。回歸正題。
意圖:當乙個物件狀態發生改變時,讓依賴它的所有物件得到通知。
其實當你程式設計有一定能力看到這句話,你閉著眼都能把觀察者模式寫出來了。所謂設計模式不就是前人遇到問題解決方案的乙個總結?
舉例:我們玩遊戲時,角色公升級後,一般都會看都到螢幕有乙個提示,用來告訴玩家,你的角色公升級了(準備好money換裝備沒?親)。不廢話,下面我實現乙個效果,角色公升級後,寵物便會跳個舞。
**:
先定義觀察者介面
public inte***ce levelobserver
然後抽象被觀察者
public abstract class observered }
public listgetlist()
public void setlist(listlist)
public void addlevelobserver(levelobserver ob)
public void removelevelobserver(levelobserver ob)
}
看過一些別人的**,好像一般都是抽象類實現主要邏輯。這裡也是實現通知被觀察者的邏輯。
然後便是寵物物件實現觀察者介面
public class monster implements levelobserver
public string getname()
public void setname(string name)
@override
public void update()
}
接著,被觀察者的具體實現
public class role extends observered
public void uplevel()
public string getname()
public void setname(string name)
}
好了,最後丟到主線程執行
public class main
}
執行結果:
小明等級提公升1
巨獸興奮的跳起舞來
就這樣,乙個簡單的觀察者模式完成。
題外話:這段時間主要是學習設計模式,先不說會用,起碼會寫先。工作後,感覺基礎才是重要的,其他一些神馬框架神馬語言,不過是個工具。內在的東西才是硬道理。
設計模式學習之 觀察者模式
觀察者模式包含部分 1 抽象被觀察者 無具體意義,被觀察者需要實現該幾口或是繼承該抽象類 2 具體被觀察者 包含對觀察者資訊的維護,比如對觀察者的增減,包括對觀察者的資訊通知以及需要讓每個觀察者的訊息 3 抽象觀察者 無具體業務邏輯,包含具體觀察者必須實現的介面或似乎繼承的抽象類 4 具體觀察者 抽...
設計模式之觀察者模式學習
observer模式是行為模式之一,它的作用是當乙個物件的狀態發生變化時,能夠自動通知其他關聯物件,自動重新整理物件狀態。observer模式提供給關聯物件一種同步通訊的手段,使某個物件與依賴它的其他物件之間保持狀態同步。subject 被觀察者 被觀察的物件。當需要被觀察的狀態發生變化時,需要通知...
設計模式之觀察者模式
首先說了乙個自己的小例子吧,前兩天我的乙個朋友來找我玩,因為路途比較遠,我需要知道他的位置,然後安排好時間去接他,那麼在這個例子中,我就是乙個觀察者,需要時時刻刻觀察他的位置,我的朋友就是乙個被觀察者。那麼需要知道我朋友的位置,就有兩種方式,第一,我自己打 問,第二,我的朋友告訴我,下面我們來看看這...