摘要:觀察者模式一觀察者模式定義定義對象間一種一對多的依賴關(guān)系,使得當每一個對象改變狀態(tài),則所有依賴于他的對象都會得到通知,并自動更新角色抽象觀察者角色抽象被觀察者角色具體觀察者角色具體被觀察者角色模式拉模式只通知是否變化而沒有具體細節(jié)推模式會通
觀察者模式
一. 觀察者模式 1.1 定義定義對象間一種一對多的依賴關(guān)系,使得當每一個對象改變狀態(tài),則所有依賴于他的對象都會得到通知,并自動更新.
1.2 角色抽象觀察者角色(IObserver).
抽象被觀察者角色(ISubject).
具體觀察者角色(Observer).
具體被觀察者角色(Subject).
1.3 模式拉模式:只通知是否變化而沒有具體細節(jié).
推模式:會通知具體細節(jié).
二. 具體實現(xiàn) 2.1 創(chuàng)建觀察者抽象接口public interface IObserver { void update(); }2.2 創(chuàng)建具體觀察者
public class ObserverA implements IObserver { @Override public void update() { System.out.println("ObserverA update ..."); } } public class ObserverB implements IObserver { @Override public void update() { System.out.println("ObserverB update ..."); } }2.3 創(chuàng)建被觀察者對象
public class Subject { List2.4 調(diào)用observerList = new ArrayList<>(); public void addObserver(IObserver observer){ if(!observerList.contains(observer)){ observerList.add(observer); } } public void change (){ System.out.println("Subject change ..."); notifyObservers(); } public void notifyObservers(){ for(IObserver observer : observerList){ observer.update(); } } }
public static void main(String[] args) { Subject subject = new Subject(); IObserver observerA = new ObserverA(); IObserver observerB = new ObserverB(); subject.addObserver(observerA); subject.change(); subject.addObserver(observerB); subject.change(); }2.5 輸出
Subject change ... ObserverA update ... Subject change ... ObserverA update ... ObserverB update ...三. 優(yōu)缺點 3.1 優(yōu)點
觀察者與被觀察者抽象耦合,容易擴展.
建立了一套觸發(fā)機制.
3.2 缺點循環(huán)依賴會導(dǎo)致系統(tǒng)崩潰.
觀察者太多會浪費時間.
四. 源碼https://github.com/Seasons20/DisignPattern.git
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69682.html
摘要:時間年月日星期二說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)源碼學(xué)習(xí)源碼第一章觀察者模式概述課程簡介觀察者模式的定義定義對象間的一種一對多的依賴關(guān)系。 時間:2017年08月29日星期二說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github.com/z...
摘要:三內(nèi)置觀察者模式了解內(nèi)置觀察者模式包內(nèi)包含最基本的類與接口,這和上面的接口與接口很類似。根據(jù)具體的需求,如果內(nèi)置的觀察者模式不能滿設(shè)計,那么我們可以像剛開始那樣自己實現(xiàn)一套觀察者模式。參考資料設(shè)計模式 一、了解觀察者模式 1.1 什么是觀察者模式 觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象狀態(tài)改變時,它的所有依賴者都會收到通知并自動更新。 典型的問題比如報社,只要你是他...
摘要:觀察者模式定義設(shè)計模式中對的定義一個對象稱為維持一系列依賴于它觀察者的對象,將有關(guān)狀態(tài)的任何變更自動通知給它們。如圖模式比較觀察者模式則多了一個類似于話題調(diào)度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設(shè)計模式》中對Observer的定義:一個對象(稱為subject)維持一系列依賴于它(觀察者)的對象,將有關(guān)狀態(tài)的任何變更自動通知給它們。 《設(shè)計模...
摘要:簡介觀察者模式是行為型模式的一種,它定義了對象之間一種一對多的依賴關(guān)系,當一個對象發(fā)生改變時,依賴它的所有對象會被通知并且自動更新,它符合對象之間松耦合的設(shè)計原則。具體觀察者各自實現(xiàn)接口方法,可以及時得到通知并更新。 1. 簡介 ??觀察者模式(Observer)是行為型模式的一種,它定義了對象之間一種一對多的依賴關(guān)系,當一個對象發(fā)生改變時,依賴它的所有對象會被通知并且自動更新,它符合...
摘要:觀察者模式是一種使用頻率非常高的設(shè)計模式,無論是移動應(yīng)用應(yīng)用或者桌面應(yīng)用,觀察者模式幾乎無處不在,它為實現(xiàn)對象之間的聯(lián)動提供了一套完整的解決方案,凡是涉及到一對一或者一對多的對象交互場景都可以使用觀察者模式。 觀察者模式(Observer Pattern)屬于對象行為型模式的一種,定義對象之間的一種一對多依賴關(guān)系,使得每當一個對象狀態(tài)發(fā)生改變時,其相關(guān)依賴對象皆得到通知并被自動更新。 ...
摘要:觀察者模式觀察者模式也可以成為發(fā)布訂閱模式,此模式是對象之間的模式,對象之間呈現(xiàn)一種一對多的關(guān)系。其中的一是被觀察者,多是觀察者,故被觀察者不能產(chǎn)生多個對象,只能有一個對象供觀察者觀察,所以在寫被觀察者的時候,需要使用到單例模式。 觀察者(Observer)模式 觀察者(Observer)模式 也可以成為發(fā)布訂閱模式,此模式是對象之間的模式,對象之間呈現(xiàn)一種一對多的關(guān)系。其中的一是被觀...
閱讀 701·2023-04-25 19:53
閱讀 4296·2021-09-22 15:13
閱讀 2578·2019-08-30 10:56
閱讀 1335·2019-08-29 16:27
閱讀 2946·2019-08-29 14:00
閱讀 2424·2019-08-26 13:56
閱讀 448·2019-08-26 13:29
閱讀 1625·2019-08-26 11:31