觀察者模式之二 -發佈 訂閱模式

 

觀察者模式(有時又被稱爲發佈/訂閱模式)是軟體設計模式的一種。在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實作事件處理系統。觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生改變時候,會通知所有的觀察對象,以便他們能更新自己

 

主題對象,主題對象發生變化時,能夠更新監聽他的對象
package com.design.observer03;

import java.util.ArrayList;
import java.util.List;

public class Subject {
	private List<Observer> observers = new ArrayList<Observer>();
	public void addObserver(Observer observer)
	{
		observers.add(observer);
	}
	public void removeObserver(Observer observer)
	{
		observers.remove(observer);
	}
	
	public void notifyObservers()
	{
		for(Observer o:observers)
		{
			o.update();
		}
	}

}


 

 

package com.design.observer03;

public abstract class Observer {

	protected String name;
	public Observer(String name,Subject subject) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public abstract void update();
}

 

 

package com.design.observer03;

public class ObserverA extends Observer{

	public ObserverA(String name, Subject subject) {
		super(name, subject);
		subject.addObserver(this);
		
	}

	@Override
	public void update() {
		System.out.println("ObserverA 更新自己");
	}

}


 

 

package com.design.observer03;

public class ObserverB extends Observer{

 public ObserverB(String name, Subject subject) {
  super(name, subject);
  subject.addObserver(this);
 }

 @Override
 public void update() {
  System.out.println("ObserverB 更新自己");
 }

}




 

 

 

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