觀察者模式及Java實現例子
觀察者模式
觀察者模式 Observer
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。
這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓它們能夠自動更新自己。
觀察者模式的組成
抽象主題角色:把所有對觀察者物件的引用儲存在一個集合中,每個抽象主題角色都可以有任意數量的觀察者。抽象主題提供一個介面,可以增加和刪除觀察者角色。一般用一個抽象類和介面來實現。
抽象觀察者角色:為所有具體的觀察者定義一個介面,在得到主題的通知時更新自己。
具體主題角色:在具體主題內部狀態改變時,給所有登記過的觀察者發出通知。具體主題角色通常用一個子類實現。
具體觀察者角色:該角色實現抽象觀察者角色所要求的更新介面,以便使本身的狀態與主題的狀態相協調。通常用一個子類實現。如果需要,具體觀察者角色可以儲存一個指向具體主題角色的引用。
http://www.cnblogs.com/mengdd/archive/2013/02/07/2908929.html
http://blog.csdn.net/chenssy/article/details/8955696
相關推薦
觀察者模式及Java實現例子
觀察者模式 觀察者模式 Observer 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。 這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓它們能夠自動更新自己。 觀察者模式的組成 抽象主題角色:把所有對觀察者物件的引用儲存在一個集合中,每個抽象主題角色
最簡單的觀察者模式純JAVA實現
溫故知新 首先我們定義兩個介面:一個是觀察者有一個方法 updata();接收被觀察者改變後傳送過來的訊息,另一個是觀察者 有三個方法 新增觀察者1、addWather(Watcher watche
大話設計模式之觀察者模式總結-java實現
注:示例來自《大話設計模式》 現有如下需求 公司員工想要利用工作時間炒股票 老闆經常外出 怕被老闆看到 於是拜託前臺小姐姐 老闆回來的時候打個電話通知他們 初步程式碼實現如下 前臺祕書類 package Test14; import java.uti
Android異步框架RxJava 1.x系列(一) - 觀察者模式及實現
from 預覽 目錄 ole 普通 清零 handler 使用 tps Android異步框架RxJava 1.x系列(一) - 觀察者模式及實現 前言 RxJava 是一款基於 Java VM 實現的響應式編程擴展庫 - 基於觀察者模式的異步和事件處理框架。RxJava
設計模式之觀察者模式——利用java中提供的觀察者實現
java實現與自己實現的對比 一、不需要再定義觀察者和目標的介面了,JDK幫忙定義了 二、具體的目標實現裡面不需要再維護觀察者的註冊資訊了,這在Java中的Observable類裡面已經幫忙實現好了。 三、觸發通知的方式有一點變化,要先呼叫setChanged方
三種方式實現觀察者模式 及 Spring中的事件編程模型
其中 我想 訂閱 個人 args 我們 發送通知 當前 字段 觀察者模式可以說是眾多設計模式中,最容易理解的設計模式之一了,觀察者模式在Spring中也隨處可見,面試的時候,面試官可能會問,嘿,你既然讀過Spring源碼,那你說說Spring中運用的設計模式吧,你可以自信的
設計模式——觀察者模式(C++實現)
ace mes des ret rtu cto pattern virt date 1 #include <iostream> 2 #include <vector> 3 #include <algorithm>
三種觀察者模式的C#實現
現在 event 引用 設計 htm num blog 維護 toa 說起觀察者模式,估計在園子裏能搜出一堆來。所以寫這篇博客的目的有兩點: 觀察者模式是寫松耦合代碼的必備模式,重要性不言而喻,拋開代碼層面,許多組件都采用了Publish-Subscribe模式,所以我
PHP 觀察者模式和php實現 Observer Pattern
BE pattern 修改 private ray 擴展 UNC array type 觀察者模式: 觀察者模式(Observer Pattern):定義對象間的一種一對多依賴關系,使得每當一個對象狀態發生改變時,其相關依賴對象皆得到通知並被自動更新。觀察者模式又叫做發布
手寫一個觀察者模式(JAVA Demo)
首先理解一下觀察者模式的定義: 定義物件間一種一對多的依賴關係,使得每當一個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新。 直譯: 建立一個一(Subject)對多(Observer)的關係,能夠使得當"一"變化的時候,依賴這個"一
觀察者模式(Java)
觀察者模式也稱釋出者模式,它是一種在專案中經常使用的模式。 一.觀察者模式的現實場景 盧康很喜歡玩微信,他喜歡瀏覽朋友圈來了解朋友圈裡面的人的最近情況,以及把自己周邊發生的事情分享給其他人看。今天早上在他上班的路上發生了一件事情,有個老人倒在地上,旁邊的行人紛紛繞開老人離
簡單工廠模式的java實現例子
說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法模式。 它的實現方式是由一個工廠類根據傳入的引數,動態決定應該建立哪一個產品類(這些產品類繼承自一個父類或介面)
工廠方法模式的java實現例子
說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、工廠方法模式:定義一個用於建立物件的介面,讓子類決定例項化哪一個類。工廠方法使一個類的例項化延遲到其子類。 核心工廠類不再負責產品的建立,這樣核心類成為一個抽象
原型模式的java實現例子
說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、原型模式:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。 2、原型模式的UML類圖 3、在Java中原型模式變成clone()方法的使用,由
模板模式的java實現例子 大象放入冰箱
最近在看《Thinking In UML大象》。看到裡面講介面設計的時候,舉了“把大象放入冰箱”的例子。自己順手就寫了一下,用到了模板模式 從main方法開始 public static void main(String[] args) { Refrige refr
設計模式-中介者模式(Java實現)
1. 摘要 中介者模式可以把互相關聯的兩者解耦。這裡的互相關聯,就是關係資料庫中的關聯關係。如班級和學生的關係,每個班級有多個學生,但每個學生只屬於一個班級。(關係資料庫中的一對多關係)通過中介者模式,就能很好的實現一對多、多對多關係。本文僅介紹一對多的實現,多對多的實現與
裝飾模式的java實現例子
說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、裝飾模式:在不必改變原類檔案和使用繼承的情況下,動態地擴充套件一個物件的功能。它是通過建立一個包裝物件,也就是裝飾來包裹真實的物件。 2、裝飾模式由4種角色組成:
大話設計模式之中介者模式總結-java實現
注:示例來自《大話設計模式》 儘管將一個系統分割成許多物件通常可以增加其可複用性 但是物件間相互連線的激增又會降低其可複用性 因為大量的連線使得一個物件不可能在沒有其他物件的支援下工作 系統表現為一個不可分割的整體 所以 對系統的行為進行任何較大的改動就十分困
java設計模式之門面模式及Java實現
一、概念 門面模式(Facade)也叫外觀模式,它隱藏了系統的複雜性,並向客戶端提供了一個可以訪問系統的介面,所以門面模式也是一種結構性模式。門面模式為子系統的一組介面提供一個統一的訪問介面(入口),客戶端直接通過門面類裡的統一的訪問介面,來間接呼叫子系統的方
23種設計模式及java實現
一、設計模式的分類 總體來說設計模式分為三大類: 建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種