1. 程式人生 > >觀察者模式,監控變數的變化

觀察者模式,監控變數的變化

Java使用觀察者模式監控想監控的變數的變化

下面是老大類裡面的一個變數變了,小弟能收到通知,並執行對應的內容

package com.lin;
import java.util.Observable;
import java.util.Observer;
import java.io.BufferedReader; 
import java.io.IOException;
import java.io.InputStreamReader; 
public class Hello {
      /**
       * @param args
       * @throws IOException
       */
public static void main(String[] args) throws IOException { // TODO Auto-generated method stub System.out.print("風和日麗中\n\r"); AxeGangBoss leader=new AxeGangBoss("老大"); AxeGangPeople people1=new AxeGangPeople("甲"); AxeGangPeople people2=new
AxeGangPeople("乙"); leader.addObserver(people1); leader.addObserver(people2); leader.testPeople("救命(測試小弟是否能響應通知)"); System.out.print("阻塞等待"); } } class AxeGangBoss extends Observable { private int intTestPeople;//定時測試小弟 private String mName; public
AxeGangBoss(String name) { // TODO Auto-generated constructor stub mName = name; } // 通知其他人 public void testPeople(String msg) { intTestPeople=0; //指定變數變成特定數值時候就通知小弟 while (intTestPeople!=100) { intTestPeople+=10; try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //因為其他地方不會更改intTestPeople的值, //那就不應該在其他地方寫下面這兩行 setChanged(); notifyObservers(msg); } public String getmName() { return mName; } public void setmName(String mName) { this.mName = mName; } } class AxeGangPeople implements Observer { String mName; public AxeGangPeople(String name) { // TODO Auto-generated constructor stub mName = name; } //小弟收到資訊做事 public void update(Observable arg0, Object arg1) { // TODO Auto-generated method stub AxeGangBoss writer; if (arg0 instanceof AxeGangBoss) { writer = (AxeGangBoss) arg0; System.out.print(getmName() + "收到來自:" + writer.getmName() + "的資訊:" + arg1.toString()+"\n\r"); } } public String getmName() { return mName; } public void setmNameString(String mName) { this.mName = mName; } }
風和日麗中


2秒後



乙收到來自:老大的資訊:救命(測試小弟是否能響應通知)
甲收到來自:老大的資訊:救命(測試小弟是否能響應通知)
阻塞等待

相關推薦

觀察模式監控變數變化

Java使用觀察者模式監控想監控的變數的變化 下面是老大類裡面的一個變數變了,小弟能收到通知,並執行對應的內容 package com.lin; import java.util.Observable; import java.util.Obse

python實現英雄聯盟的觀察模式這種操作可謂是聞所未聞!

觀察者模式(有時又被稱為模型-檢視(View)模式、源-收聽者(Listener)模式或從屬者模式)是軟體設計模式的一種。在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。 這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實現事件處理

Unity之C#——委託與事件觀察模式貓和老鼠事例

委託與事件,觀察者模式,貓和老鼠事例     在Unity遊戲開發中,我們經常需要在一個類中,呼叫另一個類中的方法,比如,當玩家進入到某個地方,敵人就開始攻擊玩家。這時就需要利用委託與事件,設計觀察者模式。 此處我們利用貓和老鼠來簡單描述: 程式碼如下: Ca

php 運用設計模式觀察模式設計電商平臺支付成功程式|Github倉庫

前(fei)言(hua) 在支付程式中,大型專案的維護,如果沒有運用到設計模式,面向過程的程式設計,order程式會日益增加,程式看上去雜亂無章,今天寫了一個小demo ,之前沒有運用過觀察者模式的小夥伴們,可以瞭解一下。 學到什麼 學會了這種設計模式,會讓你的程式碼清晰明瞭

觀察模式傳遞廣播中收的值

前言: 最近專案中有用到廣播,需要接收到廣播傳過來的值,在指定頁面上使用是不是很簡單呢,沒錯,這時候有人說可以寫區域性廣播啊,哪個頁面需要用到哪個頁面寫廣播啊,沒錯這的確是一個方法,但是如果說有五個頁面你能五個都寫麼。這時候又會有人說,那就用全域性啊,對 小白就是用的全域性。那麼我們如

Android 設計模式——觀察模式單例模式Build模式原型模式命令模式

 1、實現Build步驟 1、建立實體類 2、建立實體內部build類 3、實體內部類返回實體類 4、實體類建立內部類建構函式 /** * 作者:created by meixi * 郵箱:[email protected] * 日期:2018/12/14

C# 觀察模式兩個應用例項程式碼

C# 觀察者模式,兩個應用例項程式碼# 介紹 觀察者模式的目的:定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。 主要解決:一個物件狀態改變給其他物件通知的問題,而且要考慮到易用和低耦合,保證高度的協作。 何時

kafka+觀察模式實現高效能事件匯流排

一個事件匯流排的實現,主要包含三個角色:1、訊息釋出  2、訊息佇列  3、訊息派送 訊息佇列可以有多種選擇,redis,kafka,rocketMQ等,甚至是jdk blockQueue。 但作為一個工業級的設計,我們需要考慮幾點: 1、高效能  2、高可用  3、平滑

行為型設計模式(職責鏈模式命令模式中介模式觀察模式訪問者模式

職責鏈模式 主要用於使多個物件都有機會處理請求,避免請求的的傳送者和接受者之間的耦合關係。在現實生活中我們多數遇到的是不純的責任鏈模式即每個物件都處理請求的一部分後再交給下家。而純的職責鏈模式則要求對於一個請求,要不處理要不就交給下家。具體理解呢。我們可以想一下“擊鼓傳花”

設計模式--單例模式,觀察模式介面卡模式

設計模式的分類: 1.建立型模式: 與物件建立有關.單例模式 2.結構型模式:處理類或物件的組合.裝飾模式,介面卡模式 3.行為型模式:描述類或物件如何互動及如何分配職責.觀察者模式,策略模式 看c++的構造方法,無意中想到,構造方法要定義為public的,這樣才可以在ma

觀察模式實現老闆狀態變化通知 C++

說下對觀察者模式的理解: 觀察者模式定義了一種一對多的依賴關係, 讓多個觀察者物件可以同時監聽某一主題物件, 當這個主題物件的狀態發生改變的時候, 就會通知所有的觀察者物件, 使他們可以自動更新自己。

觀察模式無需多執行緒完成資料監聽

大家好,我們今天來了解一個新的設計模式——觀察者模式。 觀察者模式的思路很簡單,它被廣泛地用在各種資料監控上。很多時候我們希望監聽某個資料的變化,希望一旦獲悉它的變化之後立即採取一些舉措。按照常規的操作,我們需要開啟額外的執行緒來進行監聽。但是開啟執行緒一則非常麻煩,二則需要帶來額外的開銷,我們今天介紹的觀察

2015-03-12---外觀模式建造模式(附代碼)觀察模式(附代碼)boost庫應用

思想 err map 函數 成功 each clu all 說我 今天白天主要看了boost庫的應用,主要是經常使用的一些庫,array,bind,function,regex,thread,unordered,ref,smartpointers庫,晚上看了看設計模式。

觀察模式實際應用:監聽線程意外退出線程後自動重啟

lee text 實時 之間 最終 ren tap instance and 摘要:  觀察者模式,定義對象之間的一種一對多的依賴關系,當對象的狀態發生改變時,所有依賴於它的對象都得到通知並且被自動更新。觀察者模式在JDK中有現成的實現,java.util.Obsera

設計模式4(代理模式觀察模式

代理 bject body border 策略 解決 設計模式 server 觀察者 代理模式 本質是控制對主題對象的訪問 功能 目的 代理模式 但是代理對象則提供與目標對象相同的接口 控制對象的訪問 適配器模式 解決接口

設計模式-行為型模式觀察模式(13)

IT color 行為型模式 行為型 它的 pan value 依賴 更新 當對象間存在一對多關系時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬於行為型模式。 有時,我們希望在一個對象的狀態改變時

EventBus事件總線框架(發布/訂閱模式觀察模式

編譯 exe 組件間通信 之間 對象 int instance vol 高效率 一、 android應用內消息傳遞的方式: 1. handler方式-----------------不同線程間傳遞消息。 2. Interface接口回調方式-------任意兩個對象。 3.

文件路徑監控項目中觀察模式的分析

實現 throws over don ogg align 自己的 穩定 ack 1、概述   觀察者模式是軟件設計模式的一種,它描述了如何建立對象與對象之間的依賴關系,如何構造滿足這種需求的系統。這一模式中的關鍵對象是觀察目標和觀察者,一個目標可以有任意數目的與之相依賴的觀

sau交流學習社群—vue總結:使用vue的computed屬性實現監控變數變化使用vue的watch屬性監控變數變化從而實現其他業務

有時候遇到這麼個需求,輸入框為空的時候,請求一遍介面,如果輸入框不為空的時候,需要點選搜尋按鈕請求介面。 一、使用computed屬性的實時監控計算 我第一反應是做一個computed屬性監控這個輸入框的值,一旦監控發現值為空,我就重新執行一遍請求的方法。 <el-col :xs="8" :

觀察模式(Observer Pattern物件行為型模式釋出-訂閱模式 Publish/Subscribe Pattern)

意圖 通知狀態變化 定義物件間的一對多的依賴關係,當一個物件的狀態發生變化時,所有依賴它的物件都得到通知並被自動更新,由抽象類或介面實現。 推模式:目標角色複雜,並且觀察者角色進行更行時必須得到一些具體的變化資訊 拉模式:目標角色簡單 適用性 在