1. 程式人生 > >路一步步走>> 設計模式十九:Observer-觀察者

路一步步走>> 設計模式十九:Observer-觀察者

package com.test.DPs.XingWei.Observer;

import java.util.Enumeration;
import java.util.Vector;

/**
 * 行為型:Observer-觀察者		外觀:作用面為 物件
 */
interface Observer{
	void update();
}
class Observer1 implements Observer{
	@Override
	public void update(){
		System.out.println("Observer1 has received!");
	}
}
class Observer2 implements Observer{
	@Override
	public void update(){
		System.out.println("Observer2 has received!");
	}
}
interface Subject{
	//void add(Observer observer);
	//void del(Observer observer);
	void notifyObservers();
	void operation();
}
/**
 * 用途:定義物件間的一種一對多的依賴關係。
 *     當一個物件的狀態發生改變時,所有依賴與它的物件都得到通知並被自動更新。
 */
abstract class AbstractSubject implements Subject{
	private Vector<Observer> vector = new Vector<Observer>();
	@Override
	public void notifyObservers(){
		Enumeration<Observer> enumo = vector.elements();
		while(enumo.hasMoreElements()){
			enumo.nextElement().update();
		}
	}
}
class mySubject extends AbstractSubject{
	@Override
	public void operation(){
		System.out.println("update self!");
		notifyObservers();
	}
}