設計模式學習之觀察者模式

2021-06-19 04:28:15 字數 1579 閱讀 7255

設計模式之觀察者模式

生活:最近弄了臺準系統遊戲本,第一次接觸準系統這個概念。說白就是品牌機的私生子,都是乙個媽生的。然後私生子一般價效比都比原配的好。但私生子始終是私生子,是不會被品牌商認可的,沒保修滴,要修只能到賣家那。哥屌絲乙個,買電腦只能是想以最低的**買好的電腦了。保修之類的,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 被觀察者 被觀察的物件。當需要被觀察的狀態發生變化時,需要通知...

設計模式之觀察者模式

首先說了乙個自己的小例子吧,前兩天我的乙個朋友來找我玩,因為路途比較遠,我需要知道他的位置,然後安排好時間去接他,那麼在這個例子中,我就是乙個觀察者,需要時時刻刻觀察他的位置,我的朋友就是乙個被觀察者。那麼需要知道我朋友的位置,就有兩種方式,第一,我自己打 問,第二,我的朋友告訴我,下面我們來看看這...