(九)觀察者模式

觀察者模式

一、什麼是觀察者模式

Observer模式是行爲模式之一,它的作用是當一個對象的狀態發生變化時,能夠自動通知其他關聯對象,自動刷新對象狀態。
Observer模式提供給關聯對象一種同步通信的手段,使某個對象與依賴它的其他對象之間保持狀態同步。

二、觀察者模式的結構


三、觀察者模式的角色和職責

Subject(被觀察者)
    被觀察的對象。當需要被觀察的狀態發生變化時,需要通知隊列中所有觀察者對象。
Subject需要維持(添加,刪除,通知)一個觀察者對象的隊列列表。

ConcreteSubject
    
被觀察者的具體實現。包含一些基本的屬性狀態及其他操作。

Observer(觀察者)
    接口或抽象類。當
Subject的狀態發生變化時,Observer對象將通過一個callback函數得到通知。

ConcreteObserver
    
觀察者的具體實現。得到通知後將完成一些具體的業務邏輯處理。

四、觀察者模式的典型應用

Observer模式的典型應用

- 偵聽事件驅動程序設計中的外部事件

- 偵聽/監視某個對象的狀態變化

- 發佈者/訂閱者(publisher/subscriber)模型中,當一個外部事件(新的產品,消息的出現等等)被觸發時,通知郵件列表中的訂閱者

五、代碼

package org.fbm.observer;

import java.util.Observable;

public class Person extends Observable {
	private String name;
	private String sex;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
		this.setChanged();
		this.notifyObservers();
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
		this.setChanged();
		this.notifyObservers();
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
		this.setChanged();
		this.notifyObservers();
	}
	
	
}

package org.fbm.observer;

import java.util.Observable;
import java.util.Observer;

public class MyObServer implements Observer {

	public void update(Observable o, Object obj) {
       System.out.println("通知觀察者,發生變化");
	}
}

package org.fbm.observer;

public class MianClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person person=new Person();
		person.addObserver(new MyObServer());
		person.setName("fbm");
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章