观察者模式

被观察者
import java.util.Observable;

/**
 * 被观察者
 * @author RuiLin.Xie - xKF24276
 * 继承被观察者Observable
 */
public class Main extends Observable
{

	/**
	 * 当被观察者有Changed时,通知观察者
	 * @param arg
	 */
	public void doBusiness(Object arg)
	{
		//设置修改状态
		super.setChanged();
		//通知观察者
		super.notifyObservers(arg);
	}
	
	/**
	 * 程序入口
	 * @param args
	 */
	public static void main(String[] args)
	{
		//实例一个被观察者
		Main ob = new Main();
		
		//增加进程与任务栏两个观察者
		ob.addObserver(new ProcessObserver());
		ob.addObserver(new TaskbarObserver());
		
		//处理业务,当关闭一个eclipse时,通知两个观察者同时也移除该任务
		ob.doBusiness("eclipse");
				
	}
}


观察者1

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

/**
 * 进程观察者,实现观察者Observer接口
 * @author RuiLin.Xie - xKF24276
 */
public class ProcessObserver implements Observer
{

	/**
	 * 实现观察者接口,当发现被观察者有Changed时执行该方法
	 */
	@Override
	public void update(Observable o, Object arg)
	{
		System.out.println("从进程列表中删除" + arg + "进程");
	}

}


观察者2
import java.util.Observable;
import java.util.Observer;

/**
 * 任务栏观察者,实现观察者Observer接口
 * @author RuiLin.Xie - xKF24276
 */
public class TaskbarObserver implements Observer
{

	/**
	 * 实现观察者接口,当发现被观察者有Changed时执行该方法
	 */
	@Override
	public void update(Observable o, Object arg)
	{
		System.out.println("从任务栏移除" + arg + "任务");
	}

}

你可能感兴趣的:(java,eclipse)