设计模式学习之观察者模式

1.名词解释

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有观察者对象,使它们能够自动更新自己。

 

2.代码示例

通知者接口
package DesignPattern.ObserverPattern;

public interface IObserver {

	public void updateState();
}

 

观察者接口
package DesignPattern.ObserverPattern;

public interface IObserver {

	public void updateState();
}

 

实际通知者类
package DesignPattern.ObserverPattern;

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

public class Secretary implements ISubject {

	private List<IObserver> obsList = new ArrayList();
	
	@Override
	public void addObserver(IObserver o) {
		obsList.add(o);
	}

	@Override
	public void delObserver(IObserver o) {
		obsList.remove(o);
	}

	@Override
	public void notifyObserver() {
		if(obsList != null && obsList.size() > 0) {
			int size = obsList.size();
			for(int i = 0; i < size; i++) {
				IObserver observer = obsList.get(i);
				observer.updateState();
			}
		}
	}

}

 

股票观察者
package DesignPattern.ObserverPattern;

public class StockObserver implements IObserver {

	@Override
	public void updateState() {
        System.out.println("Boss is coming back, go to work now.");		
	}
}

 

玩游戏观察者
package DesignPattern.ObserverPattern;

public class PlayGameObserver implements IObserver {

	@Override
	public void updateState() {
        System.out.println("It's time to work now.");		
	}

}

 

 

主控程序

package DesignPattern.ObserverPattern;

public class Client {

	public static void main(String[] args) {
		Secretary secretary = new Secretary();
		StockObserver stockObserver = new StockObserver();
		PlayGameObserver playGameObserver = new PlayGameObserver();
		secretary.addObserver(stockObserver);
		secretary.addObserver(playGameObserver);
		secretary.notifyObserver();
	}
}

 

你可能感兴趣的:(观察者模式)