现在的位置: 首页 > 综合 > 正文

自娱自乐观察者模式

2013年08月06日 ⁄ 综合 ⁄ 共 1659字 ⁄ 字号 评论关闭

观察者模式定义了对象间的一对多依赖关系,让一个或多个观察者对象观察一个主题对象,当主题对象的状态发生变化时,系统能通知所有的依赖于此对象的观察者对象,从而使得观察者对象能够各自自动更新!

在观察者模式中,被观察的对象常常也被称为【目标】或【主题】(Subject),依赖的对象被称作观察者(Observer)。

公司的制度让我常常想起此模式。公司只有一个美工,很多项目都需要美工,美工想请假很头痛,因部门经理要美工分别向公司十几个项目经理逐个打电话通知。

还有很多时候可以使用此模式:

比如系统的事件处理方式也是使用此模式,是设计模式的皇后,哈哈。

如果是异构系统现在用得最多的时MQ了,股票。

 

建立观察者模式,现在对JAVA来说那是一件非常简单的事情了!

第一步:建立Subject (继承Observable)

package cn.yangcai.Subject;

import java.util.Observable;

public class ArtdesignerSubject extends Observable {
	
	public void message(Object arg0)
	{
		if(true)
		{//判断是否触发通知
			super.setChanged();
		}
		notifyObservers(arg0);
	}
	
}

第二步:建立Observer(继承Observer)

package cn.yangcai.Observer;
import java.util.Observable;
import java.util.Observer;

public class YangcaiObserver implements Observer {

	public void update(Observable arg0, Object arg1) 
	{
		if(arg1 instanceof String)
		{
			System.out.println("美工"+arg0+"告诉项目经理杨彩:"+arg1);
		}		
	}
}

第三步:调用

package cn.yangcai;
import cn.yangcai.Observer.YangruiObserver;
import cn.yangcai.Observer.YangcaiObserver;
import cn.yangcai.Subject.ArtdesignerSubject;

public class test {
	
	public static void main(String[] args) {
		
		//1.建立subject
		ArtdesignerSubject subject=new ArtdesignerSubject();
		
		//2.建立observer,并添加
		YangcaiObserver yangcaiObserver=new YangcaiObserver();
		YangruiObserver yangruiObserver=new YangruiObserver();		
		subject.addObserver(yangcaiObserver);//添加到列表
		subject.addObserver(yangruiObserver);//添加到列表
		
		//3.发通知		
		subject.message("我要休假了!");
		subject.message("我休假回来了!");
	}
}

 

 输出为:

美工cn.yangcai.Subject.ArtdesignerSubject@affc70告诉项目经理杨锐:我要休假了!
美工cn.yangcai.Subject.ArtdesignerSubject@affc70告诉项目经理杨彩:我要休假了!
美工cn.yangcai.Subject.ArtdesignerSubject@affc70告诉项目经理杨锐:我休假回来了!
美工cn.yangcai.Subject.ArtdesignerSubject@affc70告诉项目经理杨彩:我休假回来了!

 代码下载:http://download.csdn.net/detail/ycyangcai/4198632

 

 

抱歉!评论已关闭.