觀察這模式
它基于subject(生產(chǎn)者/提供者)這個(gè)概念。subject是一種特殊對象,當(dāng)他改變時(shí),那些有他保存的一些列對象將會(huì)得到通知。而這一系列的對象被稱為Observers(觀察者),他們會(huì)對外暴露一個(gè)通知的方法,當(dāng)subject狀態(tài)發(fā)生改變時(shí)會(huì)調(diào)用這個(gè)方法。
PS:一個(gè)Subject可以為多個(gè)Observers提供服務(wù)。當(dāng)subject狀態(tài)發(fā)生變化時(shí),和諧Observers中的每一個(gè)都會(huì)收到通知。
什么時(shí)候使用觀察者模式?
- 當(dāng)你的框架有兩個(gè)實(shí)體類,一個(gè)依賴另一個(gè),你想讓他們互不影響湖泊這是獨(dú)立復(fù)用他們時(shí)。
- 當(dāng)一個(gè)變化的對象通知那些與他自身變化相關(guān)聯(lián)的未知數(shù)量的對象時(shí)。
- 當(dāng)一個(gè)變化的對象通知那些無需推斷具體是誰的對象時(shí)。
Rxjava觀察者模式工具包
在Rxjava的世界里,有四種角色:
- Observable (觀察)
- Observer (觀察者)
- Subscriber (訂閱者)
- Subjects (生產(chǎn)者)
Observables和Subjects是兩個(gè)“生產(chǎn)”實(shí)體,Observers和Subservers是兩個(gè)“消費(fèi)”實(shí)體。