`

Observer模式【二】

    博客分类:
  • Java
阅读更多

package observerDM;

import java.util.Observable;

public class ConcreteSubject extends Observable {

	public ConcreteSubject(String _name , float _price) {
		this.name = _name;
		this.price = _price;
		System.out.println("ConcreteSubject created:" + _name + "at" + _price);
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
		setChanged();
		notifyObservers(name);
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
		setChanged();
		notifyObservers(price);
	}

	private String name ;
	private float price ;
}

 

package observerDM;

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

public class NameObserver implements Observer {

	public NameObserver() {
		this.name = null ;
		System.out.println("NameObserver has created:Name is :" + this.name);
	}
	
	public void update(Observable o, Object arg) {
		
		if(arg instanceof String) {
			name = (String)arg;
			System.out.println("NameObserver has changed:Name is :" + name);
		}else {
			System.out.println("NameObserver :some other change to subject");
		}
	}
	
	private String name ;
}

 

package observerDM;

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

public class PriceObserver implements Observer {

	public PriceObserver() {
		this.price = 0 ;
		System.out.println("PriceObserver has created : Price is :" + price);
	}
	
	public void update(Observable o, Object arg) {
		if(arg instanceof Float) {
			price = ((Float)arg).floatValue();
			System.out.println("PriceObserver has changed:Price is :" + price);
		}else {
			System.out.println("PriceObserver :some other change to subject");
		}
	}
	
	private float price ;
}

 

package observerDM;

public class TestObservers {
	
	public static void main(String[] args){
		
		ConcreteSubject sub = new ConcreteSubject("Com pops",(float)1.30);
		
		NameObserver name = new NameObserver();
		PriceObserver price = new PriceObserver();
		
		sub.addObserver(name);
		sub.addObserver(price);
		
		sub.setName("Frosted Flakes");
		sub.setPrice((float)1.40);
		
		sub.setPrice((float)2.03);
		sub.setName("helloWorld");
	}
}

 

分享到:
评论
1 楼 csdn_zuoqiang 2010-08-24  
ConcreteSubject created:Com popsat1.3
NameObserver has created:Name is :null
PriceObserver has created : Price is :0.0
PriceObserver :some other change to subject
NameObserver has changed:Name is :Frosted Flakes
PriceObserver has changed:Price is :1.4
NameObserver :some other change to subject
PriceObserver has changed:Price is :2.03
NameObserver :some other change to subject
PriceObserver :some other change to subject
NameObserver has changed:Name is :helloWorld

相关推荐

    Observer模式

    Observer模式,也被称为“发布-订阅”模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Observer模式是实现...

    Observer设计模式实例

    在Observer模式中,主要有两个关键角色:Subject(主题)和Observer(观察者)。Subject维护了一个Observer的列表,并负责在状态变化时通知它们。Observer则关注Subject,当Subject状态变化时,Observer会收到通知并...

    OBserver模式设计实现

    标题中的"OBserver模式设计实现"是指探讨如何在实际编程中应用观察者模式,无论是用Java还是C++。Head First系列书籍是著名的编程学习资源,以易懂的方式解释复杂的设计模式。在描述中提到的"Head First模式设计用的...

    observer模式实现示例

    Observer模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在C++编程中,Observer模式通常通过函数指针或者接口来实现,这两种方法...

    Observer模式代码实现

    ### Observer模式代码实现 #### 观察者模式简介 观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动...

    重温Observer模式--热水器·改

    Observer模式是一种设计模式,主要目的是实现对象之间的松耦合,使得当一个对象的状态发生改变时,依赖于这个对象状态的其他对象能够得到通知并自动更新。在这个“重温Observer模式--热水器·改”的讨论中,作者将...

    Observer模式的传统实现和AOP实现

    对Observer模式的实现,引入后可直接使用。 包括传统实现和遵循AOP思想的实现

    Observer模式的应用

    请选用适当的设计模式,编写一个股票行情分析软件,随着时间的推移和股票价格的变动,实现各种指标的动态更新(要求至少实现一个股票的分时图和K线图:为降低编程工作量,K线图可以用开盘价、收盘价、最高价、最低价...

    Observer与Command模式在VTK类库设计中的应用研究

    Observer模式是一种行为设计模式,用于定义对象间的依赖关系,以便当一个对象(目标)的状态发生变化时,所有依赖于它的对象(观察者)都会自动收到通知并更新自身。这种模式能够帮助开发者创建灵活且可扩展的系统,...

    C++ Observer模式

    Observer模式,也称为“订阅”或“发布-订阅”模式,是软件设计中的一种行为模式,主要用于处理对象间的一对多依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这个模式在C++中...

    Observer 模式

    Observer模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察者”对象,使得它们能够自动更新自己。这个模式在软件工程中扮演着重要的角色,尤其是在事件驱动或数据绑定的系统中...

    设计模式之观察者模式(Observer Pattern)

    "ObserverPattern(订阅模式)3.zip"中的代码可能进一步阐述了观察者模式,这里的“订阅”一词可能意味着用户可以订阅特定的主题,只有当这些主题的状态改变时,用户才会收到通知。这与传统的观察者模式类似,但更加...

    设计模式之Observer

    Observer模式,又称为“观察者模式”或“发布-订阅模式”,是一种行为设计模式,用于在对象之间建立一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。Observer模式...

    设计模式C++学习之观察者模式(Observer)

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

    观察者模式,Observer

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

    observer观察者模式

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在软件工程中,这常用于实现事件驱动编程,使得系统能够及时响应变化。 在...

    Observer设计模式

    在文章《Java设计模式——Observer模式详解》中,作者详细讲解了Observer模式的原理、实现方式和应用场景。首先,他介绍了如何创建一个Observable对象,并向其添加Observer。然后,通过实现Observer接口,定义观察者...

    Observer模式代码

    Observer模式,也称为“发布-订阅”模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Observer模式是解耦系统...

    Observer观察者模式

    在Java中,Observer模式主要通过java.util.Observable和java.util.Observer接口来实现。Observable类代表被观察的对象,它可以添加观察者,删除观察者,并通知所有的观察者。Observer接口则定义了一个update方法,当...

Global site tag (gtag.js) - Google Analytics