`
smartwgd
  • 浏览: 53853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Observer观察者模式

阅读更多

 

参考:http://www.jdon.com/designpatterns/observer.htm

还在看大话设计模式,今天偶然翻到这个模式,所以写写~~下面的内容均和此书有关。

 

观察者模式(Observer):适用于多个系统或者对象与一个特定的对象进行联动,当这个对象某个状态改变的时候,触发具体抽象类的Update函数,对多个对象进行update。

 

下面是这个观察者模式的原型图

观察者模式原型

 

源码:

Subject类

package observer.prototype;

import java.util.ArrayList;

public abstract class Subject {
	private ArrayList<Observer> observers = new ArrayList<Observer> ();
	
	public void Attach(Observer observer){
		observers.add(observer);
	}
	
	public void Detach(Observer observer){
		observers.remove(observer);
	}
	
	public void Notify(){
		for(Observer  observer:observers){
			observer.Update();
		}
	}
}

 Subject的实现类:

package observer.prototype;

public class ConcreteSubject extends Subject {
	private String subjectState;

	public void setSubjectState(String subjectState) {
		this.subjectState = subjectState;
	}

	public String getSubjectState() {
		return subjectState;
	}
}

 Observer的抽象类:

package observer.prototype;

public abstract class Observer {
	public abstract void Update();
}

 Observer的具体类:

package observer.prototype;

public class ConcreteObserver extends Observer {
	
	private String name;
	private String observerState;
	private ConcreteSubject subject;
	
	ConcreteObserver(ConcreteSubject subject,String name){
		this.name = name;
		this.subject = subject;
	}

	@Override
	public void Update() {
		observerState = subject.getSubjectState();
		System.out.println("观察者 "+name+"的状态是"+observerState);
	}

}
 
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics