`

观察者设计模式

阅读更多
今天测试了一下观察者设计模式,把代码贴上来总结一下:
一共4个类,分别是subject、ConreateSubject、observer、ConcreateObserver和一个测试类
public abstract class Subject {
	private List<Observer>list=new ArrayList<Observer>();
	public void attach(Observer o){
		list.add(o);
	}
	public void detach(Observer o){
		list.remove(o);
	}
	public void nitify(){
		for(Observer o:list){
			o.Update();
		}
	}
}

public class ConcreteSubject extends Subject {
	private String subjectState;

	public String getSubjectState() {
		return subjectState;
	}

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

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

public class ConcreteObserver extends Observer {

    private String observerState;//观察者的状态
    private String name;//观察者的名字
    private ConcreteSubject subject;//所观察的主题,这里通过构造获得引用,既可以获得主题的状态

    public ConcreteObserver(ConcreteSubject subject, String name)
    {
        this.subject = subject;
        this.name = name;
    }

	public ConcreteSubject getSubject() {
		return subject;
	}

	public void setSubject(ConcreteSubject subject) {
		this.subject = subject;
	}

	public String getObserverState() {
		return observerState;
	}

	public void setObserverState(String observerState) {
		this.observerState = observerState;
	}


	public  void Update()
    {
		observerState = subject.getSubjectState();
        System.out.println("The observer's state of "+name+" is"+observerState);
    }

}

public class testObserverPattern {
	public static void main(String[] args) {
		ConcreteSubject subject=new ConcreteSubject();
		ConcreteObserver t=new ConcreteObserver(subject, "观察者A");
		subject.attach(t);
		subject.attach(new ConcreteObserver(subject, "观察者B"));
		subject.attach(new ConcreteObserver(subject, "观察者C"));
		subject.setSubjectState("准备好了!");
		subject.nitify();
		System.out.println(t.getObserverState());
	}
}

测试结果:
The observer's state of 观察者A is准备好了!
The observer's state of 观察者B is准备好了!
The observer's state of 观察者C is准备好了!
The observer's state of 观察者A is准备好了!
The observer's state of 观察者B is准备好了!
The observer's state of 观察者C is准备好了!
准备好了!
0
0
分享到:
评论

相关推荐

    ObserverDemo观察者设计模式源码

    观察者设计模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式在很多场景下都有广泛...

    委托和事件-观察者设计模式

    观察者设计模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 **委托** 委托在.NET中可以视为类型安全的函数指针,它允许我们...

    观察者设计模式 C++实现

    观察者设计模式是一种行为设计模式,它允许一个对象(称为主题)在状态改变时通知其他对象(称为观察者)。这种模式常用于事件处理,当一个对象的状态发生变化时,所有依赖于该状态的对象都会得到通知并自动更新。在...

    观察者设计模式demo

    观察者设计模式是一种行为设计模式,它允许对象在状态改变时通知其他依赖它的对象,而无需显式指定这些依赖关系。在这个"观察者设计模式demo"中,我们可能看到一个具体的实现,特别是在Android开发中的应用,例如在...

    构建者模式、回调和观察者设计模式

    构建者模式、回调和观察者设计模式是软件开发中常用的设计模式,它们分别在不同的场景下发挥着重要的作用。下面将详细介绍这三个设计模式,并通过一个简单的例子来展示它们的应用。 首先,构建者模式(Builder ...

    java中监听机制,以及观察者设计模式

    Java中的监听机制与观察者设计模式是编程中重要的概念,它们在软件开发中扮演着关键的角色,尤其是在构建可扩展和可维护的系统时。这里,我们将深入探讨这两个主题,并通过实例来阐述它们的工作原理和应用。 首先,...

    设计模式之观察者设计模式理解

    轻松理解观察者设计模式

    java观察者设计模式demo源码

    Java观察者设计模式(Observer Design Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理,例如...

    观察者设计模式笔记

    031114_【第11章:Java常用类库】_观察者设计模式笔记

    设计模式--观察者模式java例子

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    观察者模式java实现观察者设计模式

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,我们可以利用Java提供的...

    ObserverDemo观察者设计模式Demo

    ObserverDemo观察者设计模式Demo

    跟我一起学 设计模式-观察者模式

    观察者模式,也称为发布-订阅模式或事件驱动模式,是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 在C#、ASP.NET等.NET框架中,...

    设计模式实现——观察者模式

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...

    观察者模式

    观察者设计模式观察者模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时...

    设计模式之观察者模式

    观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动编程、发布/订阅系统...

    Java观察者设计模式详解

    Java观察者设计模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件处理系统,将观察者与被观察对象解耦,使得...

Global site tag (gtag.js) - Google Analytics