观察者模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
Subject
public class Subject {
private List<Observer> observers = new ArrayList<Observer>();
public void attach(Observer observer){
observers.add(observer);
}
public void detach(){
observers.remove(observer);
}
public void notify(){
for(Observer observer : observers){
observer.update();
}
}
}
Observer
public class Observer {
public void update(){
}
}
ConcreteSubject
public class ConcreteSubject extends Subject {
private String subjectState;
public void setSubjectState(String subjectState){
this.subjectState = subjectState;
}
public String getSubjectState(){
return this.subjectState;
}
}
ConcreteObserver
public class ConcreteObserver extends Observer {
private String name;
private String observerState;
public ConcreteSubject subject;
public ConcreteObserver(ConcreteSubject subject, String name){
this.subject = subject;
this.name = name;
}
public void setSubject(ConcreteSubject subject){
this.subject = subject;
}
public ConcreteSubject getSubject(){
return this.subject;
}
public void update(){
observerState = m_ConcreteSubject.subjectState;
System.out.println("观察者"+name+"的新状态是"+observerState);
}
}
Client
class Client
{
public static void main(String[] args)
{
ConcreteSubject s = new ConcreteSubject();
s.attach(new ConcreteObserver(s,"X"));
s.attach(new ConcreteObserver(s,"Y"));
s.attach(new ConcreteObserver(s,"Z"));
s.subjectState = "ABC";
s.notify();
}
}
当一个对象的改变需要通知其他对象的时候,并且他不知道有多少个对象需要改变的时候,应该考虑使用观察者模式。
分享到:
相关推荐
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
Qt设计模式之观察者模式
观察者模式及实例,适合初学者阅读 。。。。。。。。。。。。。。。
采用Java语言编写的一个观察者模式实例。观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,...
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
java 设计模式 观察者模式 简单实例 包括测试test类
运用观察者模式及MVC模式的整合,是javaWeb的简单的实现了选民投票
观察者模式demo 观察者模式demo 观察者模式demo 观察者模式demo
js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子
设计模式之观察者模式Java版本实现和UML类设计图
观察者模式Demo,设计模式,观察者模式
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
iOS 设计模式 观察者模式
观察者模式使用
观察者模式最好的诠释 模式编程中的观察者模式delphi代码
设计模式--观察者模式java例子
观察者模式 c++ 工程角度实现
一个类实现Android观察者模式(最简单实用的观察者模式)
设计模式-观察者模式(讲解及其实现代码)
观察者模式Demo 观察者模式Demo 观察者模式Demo 观察者模式Demo 观察者模式Demo 观察者模式Demo 观察者模式Demo