《研磨设计模式》chap12 观察者模式observer(2)模式介绍
生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap12 观察者模式observer(2)模式介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 兩個步驟
. 注冊
. 通知
2. 推模型和拉模型
- 推模型
目標對象主動向觀察者推送目標的詳細信息,不管觀察者是否需要,推送的信息通常是目標對象的全部或部分數據,相當于是在廣播通信。 - 拉模型
目標對象在通知觀察者的時候,只傳遞少量信息。如果觀察者需要更具體的信息,由觀察者主動到目標對象中獲取,相當于是觀察者從目標對象中拉數據。一般這種模型的實現中,會把目標對象自身通過update方法傳遞給觀察者,這樣在觀察者需要獲取數據的時候,就可以通過這個引用來獲取了。
推模型是假定目標對象知道觀察者需要的數據;而拉模型是目標對象不知道觀察者具體需要什么數據,沒有辦法的情況下,干脆把自身傳給觀察者,讓觀察者自己去按需取值。
推模型可能會使得觀察者對象難以復用,因為觀察者定義的update方法是按需而定義的,可能無法兼顧沒有考慮到的使用情況。這就意味著出現新情況的時候,就可能需要提供新的update方法,或者是干脆重新實現觀察者。
而拉模型就不會造成這樣的情況,因為拉模型下,update方法的參數是目標對象本身,這基本上是目標對象能傳遞的最大數據集合了,基本上可以適應各種情況的需要。
2.1推模型
public class NewsPaper extends Subject{public void setContent(String content) {this.content = content; notifyObservers(content);} }public interface Observer {//被通知的方法,直接把報紙的內容推送過來 public void update(String content); }public class Reader implements Observer{ public void update(String content) { }public class Subject { protected void notifyObservers(String content) {for(Observer reader : readers){reader.update(content);}} }總結
以上是生活随笔為你收集整理的《研磨设计模式》chap12 观察者模式observer(2)模式介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《研磨设计模式》chap12 观察者模式
- 下一篇: 《研磨设计模式》chap12 观察者模式