放棄該放棄的是無奈,放棄不該放棄的是無能,不放棄該放棄的是無知,不放棄不該放棄的是執著!
今天,我們學習設計模式中的觀察者模式,我們先不說何為觀察者模式,我們先來舉個生活中的列子,比如,你在街上看到乙個美女,但是你不好意思上去要**,打招呼,於是你就一直在盯著她,然後姑娘也發現了你,看你小夥子還不錯,於是給你乙個顏色,意思是說他對你感覺還行,這時你有了信心,然後你上去成功的勾搭上了妹子。這其實就是我們接下來要說的觀察者模式,你就是觀察者,美女就是被觀察者,美女給了你個訊號,於是你就做出了動作。ok!
下面我們來先看一下觀察者模式的定義和好處,懂的人可以直接看**!
定義:
定義物件間一種一對多的依賴關係,使得每乙個物件改變狀態,則所有依賴於它的物件都會得到通知並自動更新。當然,乙個被觀察者(observable)能有多個觀察者(observer),乙個觀察者也可以觀察多個被觀察者。是不是感覺很簡單呢??
現在我們就以開篇的列子稍作修改來寫乙個觀察這模式的例子:
比如很多男孩子都在追乙個女孩子,女孩子給了他們乙個眼色,所有的男孩子都上去噓寒問暖。
我們先寫觀察者物件(observer),我們的boy
public
class boy
public
void
update()
}
接下來是我們的被觀察者(observable),我們的girl。
public
class girl
public
void
notification()}}
然後我們執行**在這裡:
public
class main
}
哈哈,是不是很簡單,我們再看看執行結果吧!
妹子說:妹子我看你們挺不錯的!
1張三說:女孩,能要個**嗎?
2王五說:女孩,能要個**嗎?
3李四說:女孩,能要個**嗎?
我們是不是實現了我們的例子?簡單吧!對觀察者模式就是這麼簡單,第一次看的話可能不好理解,但是多看幾次,你的思想就會擴散開來,能深入理解。
其實,jdk中給我們封裝好了observer和obervable,我們只需要繼承便可完成我們的觀察者模式,在學習之前,我們來張美圖放鬆一下。
接下來,我們看使用jdk裡面的observer和observable是何等的簡單。
首先observer是個介面,我們只需要實現裡面的update()方法即可
@override
public
void
update(observable o, object arg)
o:你觀察的那個被觀察者物件
arg:被觀察者給你傳過來的引數
而observable是乙個父類。我們可以很輕鬆的呼叫和重寫裡面的方法
下面是我們可以呼叫和重寫的方法:
observable()
addobservable(observer o)
deleteobservable(observer o)
notifyobservers()
notifyobservers(object args)
deleteobservers();
setchanged();
clearchanged();
haschanged();
counobservers();
方法很簡單,看意思就能猜出方法的意思和用途:
那麼下面我們來舉個例子:
比如說,如果你乙個月的工資在一萬以上,你女朋友每個月給你100塊錢零花錢,但是你乙個月的工資在一萬以下,你女朋友每個月給你50塊錢零花錢,啊,是夠苛刻的!!!
我們看一下在你賺的錢少於10000 的**:
先看女朋友的**:
public
class
girl
extends
observable else }}
接下來是描述你的**:
public
class
boyimplements
observer
public
boy(int salary)
@override
public
void
update(observable o, object arg)
}
接下來我們看你的工資少於10000時候的主工程!
public
class main
}
ok,寫到這裡我們就搞定了,我們看下執行結果:
我這個月的零花錢為50
那麼我們將錢改個數大於10000呢?
public
class main
}
看下結果
我這個月的零花錢為100
python觀察者模式 python 觀察者模式
python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...
觀察者模式
觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...
觀察者模式
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓他們能夠自動更新自己 任何乙個模式都是離不開角色的,這裡也會有幾種角色 抽象主題角色 把所有對觀察者物件的引用儲存在乙個集合中,每個抽象主題角色都可以有任意數量的觀察...