定義
觀察者模式定義了對(duì)象之間的一對(duì)多依賴曹动,當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí)谚中,它的所有以來者都會(huì)接到通知并自動(dòng)更新沐寺。
如:
主題和觀察者定義一對(duì)多的關(guān)系林艘。觀察著依賴于主題,只要主題狀態(tài)改變混坞,觀察者就會(huì)被通知狐援。
理解
主題是真正擁有數(shù)據(jù)的人,觀察者是主題的依賴者究孕。
松耦合
當(dāng)兩個(gè)對(duì)象之間松耦合啥酱,交互而不用關(guān)心彼此實(shí)現(xiàn)的細(xì)節(jié)。
觀察者模式提供一種對(duì)象設(shè)計(jì)厨诸,讓主題和觀察者之間松耦合镶殷。
對(duì)于觀察者,主題只知道觀察者實(shí)現(xiàn)某個(gè)接口(如Observer)泳猬,主題不需要知道觀察者的具體類是誰批钠,以及實(shí)現(xiàn)細(xì)節(jié)宇植;
當(dāng)添加新的觀察者時(shí)得封,主題唯一依賴的是一個(gè)實(shí)現(xiàn)Observer接口的對(duì)象,可以隨時(shí)增加觀察者指郁。
當(dāng)出現(xiàn)新的觀察者時(shí)忙上,主題代碼不需要修改,只需要在新的觀察者實(shí)現(xiàn)觀察者接口闲坎,然后注冊(cè)觀察者即可疫粥,主題只會(huì)發(fā)通知給實(shí)現(xiàn)觀察者接口的對(duì)象;
因?yàn)閮烧叩乃神詈闲匝梢?strong>獨(dú)立的復(fù)用主題或者觀察者梗逮。
改變主題或者觀察者其中一方,并不會(huì)影響另一方绣溜。因?yàn)閮烧呤撬神詈系目锻灰涌诒蛔袷兀涂梢噪S意地改變他們怖喻。
為了交互對(duì)象之間的松耦合設(shè)計(jì)努力
松耦合的設(shè)計(jì)之所以能讓我們建立一個(gè)彈性的OO系統(tǒng)底哗,能應(yīng)對(duì)變化是因?yàn)閷?duì)象之間的相互依賴降到了最低。