Spring設計模式剖析之觀察者模式

2021-10-07 18:41:59 字數 1565 閱讀 3967

自定義監聽事件

物件之間存在一對多或者一對一依賴,當乙個物件改變狀態,依賴它的物件會收到通知並自動更新。 mq其實就屬於一種觀察者模式,發布者發布資訊,訂閱者獲取資訊,訂閱了就能收到資訊,沒訂閱就收不到資訊。

1、觀察者和被觀察者是抽象耦合的。

2、建立一套觸發機制。

1、如果乙個被觀察者物件有很多的直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間。

2、如果在觀察者和觀察目標之間有迴圈依賴的話,觀察目標會觸發它們之間進行迴圈呼叫,可能導致系統崩潰。

package com.tukecloud.spring;

import org.springframework.context.event.contextrefreshedevent;

/*****

* @author: jamison huang

* @description: 建立監聽物件

****/

public

class

implements

}

<?xml version="1.0" encoding="utf-8"?>

xmlns

=""xmlns:xsi

=""xsi:schemalocation

=" /spring-beans.xsd"

>

class

=/>

beans

>

3測試
public

class

springcontexttest

}

結果:

監聽到容器初始化完成!

1.定義事件監聽物件: messageeventlistener
public

class

messageeventlistener

implements

}

2.定義事件物件: messageevent
public

class

messageevent

extends

}

3.將物件新增到容器中:messageeventlistener
"messageeventlistener"

class

="com.tukecloud.spring.messageeventlistener"

/>

4.建立測試
public

static

void

main

(string[

] args)

5.結果
監聽到了對應事件!org.springframework.context.event.contextrefreshedevent

監聽到了對應事件!com.tukecloud.spring.messageevent

設計模式之Spring中觀察者模式

定義物件之間存在一對多或者一對一依賴,當乙個物件改變狀態,依賴它的物件會收到通知並自動更新。mq其實就屬於一種觀察者模式,發布者發布資訊,訂閱者獲取資訊,訂閱了就能收到資訊,沒訂閱就收不到資訊。優點1.觀察者和被觀察者是抽象耦合的。2.建立一套觸發機制。缺點1 如果乙個被觀察者物件有很多的直接和間接...

設計模式之觀察模式

我們使用jdk提供的api來實現乙個觀察者模式,學生向老師提問問題,然後通知老師有學生提問,這個案例裡面,老師屬於觀察者,需要實現observer介面。學生屬於被觀察者,需要繼承observable類。學生發生變化通知老師。public class student extends observabl...

設計模式之觀察這模式

觀察者模式 既關注的主題發生變化通知觀察者 實現方式 兩個介面 1 主題介面 包含新增 刪除觀察者以及通知觀察者更新資料的方法 2 觀察者介面 規定具體觀察者用來更新資料的方法 介面實現 1 主題介面實現 實現主題介面的乙個例項,通常需要使用乙個集合arraylist存放觀察者引用,以便資料變化時通...