報紙與雜志的訂閱
- 向報社訂閱了報紙,一旦有新報紙出來,他們就會主動送報到門;
- 如果不想看了,取消報紙訂閱,就不會送報了;
- 只要報社一直在運營,就會不斷有人定或取消報紙定制,報社也一直會向訂報方發(fā)送報紙;
** 出版社 + 訂閱者 = 觀察者模式 **
在觀察者模式中,出版社叫做“主題”(Subject),訂閱者改稱為“觀察者”(Observer)。
觀察者模式定義了對象之間的一對多依戀,當(dāng)主題對象改變時,它的所有依戀著都會受到通知,并自動更新;
觀察者模式提供一種對象設(shè)計、讓主題與觀察者之間松耦合;
** 類圖 **

Paste_Image.png
** 主題與觀察者之間的數(shù)據(jù)傳遞 **
當(dāng)主題對象發(fā)生數(shù)據(jù)改變時,會主動通知所有觀察者,將數(shù)據(jù)“推 push”給所有觀察者; 當(dāng)前主題也可以添加一些公開的 getter 方法,也就是 “拉 pull”,用以觀察者來獲取自己感興趣的數(shù)據(jù);
在JDK內(nèi)置的觀察者模式框架中,2種方式都支持;jdk中的主題,是個抽象類;