`
Flyingh
  • 浏览: 18309 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Observer

 
阅读更多

 

观 察 者 模 式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

下面是House.java的代码:

 

package com.flyingh.observable;

import java.util.Observable;

public class House extends Observable {
	private float price;

	public House() {
		super();
	}

	public House(float price) {
		super();
		this.price = price;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		this.price = price;
		setChanged();
		notifyObservers(price);
	}
}

 

 下面是观察者ZhangSan.java的代码:

 

package com.flyingh.observer;

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

public class ZhangSan implements Observer {
	private Observable house;

	public ZhangSan(Observable house) {
		super();
		this.house = house;
		house.addObserver(this);
	}

	public Observable getHouse() {
		return house;
	}

	public void setHouse(Observable house) {
		this.house = house;
	}

	@Override
	public void update(Observable o, Object arg) {
		// TODO Auto-generated method stub
		System.out.println("zhangsan:" + arg);
	}

}

 

 下面是观察者LiSi.java的代码:

 

package com.flyingh.observer;

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

public class LiSi implements Observer {
	private Observable house;

	public LiSi(Observable house) {
		super();
		this.house = house;
		house.addObserver(this);
	}

	public Observable getHouse() {
		return house;
	}

	public void setHouse(Observable house) {
		this.house = house;
	}

	@Override
	public void update(Observable o, Object arg) {
		// TODO Auto-generated method stub
		System.out.println("lisi:" + arg);
	}

}

 

 下面是观察者WangWu.java的代码:

 

package com.flyingh.observer;

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

public class WangWu implements Observer {
	private Observable house;

	public WangWu(Observable house) {
		super();
		this.house = house;
		house.addObserver(this);
	}

	public Observable getHouse() {
		return house;
	}

	public void setHouse(Observable house) {
		this.house = house;
	}

	@Override
	public void update(Observable o, Object arg) {
		// TODO Auto-generated method stub
		System.out.println("wangwu:" + arg);
	}

}

 

 下面是Client.java的代码:

 

package com.flyingh.client;

import com.flyingh.observable.House;
import com.flyingh.observer.LiSi;
import com.flyingh.observer.WangWu;
import com.flyingh.observer.ZhangSan;

public class Client {
	public static void main(String[] args) {
		House house = new House(1500);

		new ZhangSan(house);
		new LiSi(house);
		new WangWu(house);

		house.setPrice(2000);
	}
}

 程序运行结果如下:

 

wangwu:2000.0
lisi:2000.0
zhangsan:2000.0
 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Observer设计模式实例

    Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...

    观察者模式,Observer

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

    Observer模式

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

    Android observer 使用demo

    在Android开发中,Observer模式是一种常见的设计模式,用于实现对象之间的通信和状态更新。Observer模式的核心思想是"一对多"的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。...

    Observer模式代码实现

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

    observer观察者模式

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

    我的图像处理工具-Observer

    在多年的图像处理工作中, 深感有必要自己开发一个开发一个集图像的显示, 变换, 各种处理分析测试的工具平台, 这就是Observer. 取名为Observer, 是因为我觉得图像的处理与分析依赖于对图像的细致观察. Observer的...

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

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

    Observer and Reactor 观察者和recator的比较

    "Observer(观察者)"和"Reactor(反应器)"是两种广泛应用于并发和事件驱动编程的设计模式。 Observer模式的核心在于定义了一对多的依赖关系,当一个对象(主题)的状态发生改变时,所有依赖于它的对象都会被自动...

    C++、MFC源代码observer

    "Observer"模式是设计模式的一种,属于行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 Observer模式的核心概念在于发布(Publish)和...

    OBserver模式设计实现

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Java和C++等面向对象编程语言中,这种模式广泛用于事件处理和实时系统,...

    Observer_exsample_observer_观测器_观测_状态观测器_

    在这个Observer_exsample_observer案例中,我们关注的是如何使用Simulink来设计和仿真一个状态观测器,特别是针对弹簧阻尼系统的应用。 首先,让我们了解一下状态观测器的基本原理。在控制系统中,我们通常只能获得...

    Disturbance Observer-Based Control_ Methods and Applications

    干扰观测器(Disturbance Observer, DO)是一种用于提高控制系统性能的技术手段。它通过对系统输出信号进行处理来估计外界干扰,并将这些估计值反馈到控制器中,从而实现对干扰的有效抑制。DO技术在现代控制领域中...

    Observer例子

    "Observer"模式是其中的一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在这个"Observer例子"中,我们将探讨如何在实际编程中应用...

    NewX_CodeProj_Observer.zip

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

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

    ### Observer与Command模式在VTK类库设计中的应用研究 #### 一、引言 VTK(Visualization Toolkit)是一套开源的三维可视化开发库,在国外得到了广泛应用,而在国内的研究相对较少,导致其应用受到一定限制。为了...

    com.designpattern.state_observer.rar

    - **具体观察者类(Concrete Observer Classes)**:实现观察者接口,订阅状态变化并处理通知。 通过分析和学习这些示例代码,开发者可以更好地理解和应用这两种设计模式,提升他们的编程技巧,同时也能提高软件的...

    Laravel开发-artisan-observer-maker

    本篇将深入探讨`artisan observer maker`,它是Laravel提供的一个命令,用于简化创建观察者类的过程。 观察者模式是一种设计模式,它允许我们定义一组订阅者,当对象的状态发生变化时,这些订阅者会自动收到通知并...

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

    在观察者模式中,通常有两个主要角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它持有一个观察者列表,并负责通知这些观察者状态的变化。观察者是依赖主题的对象,当接收到主题的通知时,它们会...

    简单理解观察者模式(Observer)

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

Global site tag (gtag.js) - Google Analytics