`
genius0182
  • 浏览: 37628 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

学习观察者模式的一个例子

阅读更多
昨天看了beckrabbit写的圣斗士星矢的状态模式和观察者模式文章之后对观察者模式又了新的认识,以前一直都是从书中学习设计模式的。看了这篇文章后感觉很形象。于是就写了一个小程序,可能很多人都听这个。程序的原理就是猫叫--老鼠跑--人醒。这里我写的是一个连续发生的。而不是猫叫的同时老鼠和人同时发生动作。因为我是刚才设计模式所以代码写的不好请大家多多指教。

我的想法是一个观察一个。也就是老鼠观察猫的,人观察老鼠的。所以首先猫是被观察者,而老鼠即是观察者也是被观察者。人就是老鼠的观察者。
代码如下:

首先我建立了三个类,分别是猫的,老鼠的和人的。
猫的类
package com.lhsm.observer;

import java.util.Observable;

public class Cat extends Observable {

	
	public void catCall(){
		this.setChanged();
		this.notifyObservers("猫叫了");
		
	}
}

老鼠的类
package com.lhsm.observer;

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

public class Mouse extends Observable implements Observer {

	public void update(Observable arg0, Object arg1) {
		// TODO Auto-generated method stub
		System.out.println(arg1);
		Observer person = new Person();
		this.clearChanged();
		this.addObserver(person);
		this.setChanged();
		this.notifyObservers("老鼠跑");
	}

}

人的类
package com.lhsm.observer;

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

public class Person implements Observer {

	public void update(Observable arg0, Object arg1) {
		// TODO Auto-generated method stub
		System.out.println(arg1);
		System.out.println("人醒");
	}

}

下面是主方法的测试类
package com.lhsm.observer;

import java.util.Observer;

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Cat cat = new Cat();
		
		Observer mouse = new Mouse();
		
		cat.addObserver(mouse);
		
		cat.catCall();
	}

}

运行结果
猫叫了
老鼠跑
人醒
分享到:
评论

相关推荐

    观察者模式模版和例子

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

    运用MVC模式及观察者模式的java小程序

    在Java编程领域,设计模式是解决常见问题的模板或最佳实践。在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的...分析和学习这些代码将有助于深入理解MVC和观察者模式的实际应用。

    java观察者模式Demo

    观察者模式是软件设计模式中的一种行为...总的来说,"java观察者模式Demo"提供了一个使用Java标准库实现观察者模式的例子,这对于学习和理解设计模式是非常有帮助的,同时通过自定义实现还能进一步深入理解其工作原理。

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

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

    设计模式-观察者模式-作业-observer.zip

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

    设计模式 观察者模式 以Android中TextView文本内容发生变化为背景

    以下是一个简单的例子,展示了如何使用观察者模式来监听TextView的文本变化: ```java TextView textView = findViewById(R.id.text_view); textView.addTextChangedListener(new TextWatcher() { @Override ...

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

    2. **C#中的实现**:C#通过`System.ComponentModel.INotifyPropertyChanged`接口支持数据绑定,这其实就是在实践中应用观察者模式的一个例子。另外,`System.Subjects`命名空间提供了一些现成的类,如`Subject<T>`和...

    Android 设计模式学习之观察者模式应用实例

    观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Android系统中,观察者模式广泛应用于事件处理、数据绑定等场景,如...

    观察者模式示例代码 android studio kotlin代码 基于java.uitl.*

    这个例子展示了如何在Android项目中使用Kotlin和`java.util.*`包中的观察者模式,虽然在现代Android开发中,我们更倾向于使用Kotlin的协程和LiveData等工具来实现异步通信和事件处理,但理解基本的观察者模式对于...

    C++设计模式代码资源5_观察者模式.zip

    **观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它允许一个对象,当其状态...通过这个例子,你可以学习如何在C++中有效地利用观察者模式来实现对象间的动态耦合,提高代码的可扩展性和灵活性。

    C++设计模式课件5_观察者模式.pdf

    在观察者模式中,一个对象(被称为“主题”或“被观察者”)的状态发生改变时,所有依赖于它的对象(被称为“观察者”)都会收到通知。 首先,我们来了解“组件协作”模式的概念。随着软件行业的发展,软件系统变得...

    设计模式 观察者 发布/订阅 Observer

    Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...

    观察者模式代码示例

    通过学习观察者模式,开发者可以更好地理解和应用这种设计模式,提高代码的可读性、可维护性和复用性。在实际工作中,观察者模式常用于事件驱动编程、用户界面更新、数据同步等领域。例如,Web开发中的Ajax异步请求...

    观察者模式最佳实践.rar

    在学习观察者模式的最佳实践中,你可以关注以下关键点: - **定义接口**:明确区分主题接口和观察者接口,确保它们之间保持松散耦合。 - **事件驱动**:了解如何通过触发事件来通知观察者,以及如何处理不同类型的...

    这是观察着模式的例子

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。在软件工程中,这种模式常用于实现发布-订阅系统,其中发布者(Subject)...

    详解Observer Pattern(观察者模式)在Java中的使用原理

    我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...

    自己实现观察者模式

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

    观察者模式

    对于初学者来说,通过加减乘除的例子学习观察者模式,可以直观地理解其工作原理,为进一步深入理解和应用其他设计模式打下基础。而对于经验丰富的开发者,理解并熟练运用观察者模式能够提高代码的灵活性和可维护性。

    JavaScript设计模式中的单例模式和观察者模式.docx

    **定义**:观察者模式是一种行为设计模式,允许你定义一个订阅机制,可以在对象事件发生时通知多个“观察”该对象的其他对象。这种模式在JavaScript中通常用于实现发布/订阅机制。 **实现原理**: 1. **定义观察者...

    Observer(观察者模式)学习源码

    在实际项目中,观察者模式可以用于各种场景,如监听用户输入、跟踪文件系统更改、处理后台任务进度更新等。通过深入理解和熟练运用Observer模式,开发者能够构建出更加灵活、响应式和易于维护的软件系统。

Global site tag (gtag.js) - Google Analytics