`
genius0182
  • 浏览: 37108 次
  • 性别: 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();
	}

}

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

相关推荐

    观察者模式demo例子

    观察者模式学习源码,有需要的童鞋可以下载看一下

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

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

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

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

    工厂模式与观察着模式的两个例子

    c#编的两个例子,非常适合初学者学习,一定要掌握设计模式的内涵,简单,但能反映出很多内容,

    策略模式工厂方法模式观察者模式

    策略模式,工厂方法模式,观察者模式 例子学习资料,初学者适用

    Java的观察者模式

    Java的观察者模式,帮助大家学习设计模式,很简单的例子哈!

    head first 设计模式例子源代码 c++版 第二章 观察者模式

    最近在看head first 设计模式,书上的例子是用java编写的....希望这写代码也能帮助别人学习c++和设计模式. 现在上传了第二章的代码,. 要是大家对这个感兴趣,就继续上传. 代码是在linux下编写的,windows下也可以编译运行.

    Vue源码学习 — 响应式原理之观察者模式

    1. 观察者模式 概念 观察者模式又被称为 发布-订阅 模式,这种模式定义了对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并完成自动更新。 优点 观察者与被观察者是...

    android学习日记-6 观察者模式与订阅者模式

    每个包都是一个例子 博文链接:https://zwx622.iteye.com/blog/2068733

    C#设计模式之观察者模式实例讲解

    前言 最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。所谓设计模式,我找了下定义:...观察者模式,有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察

    Java常用设计模式例子

    以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...

    设计模式演示代码

    压缩包中包含了观察者模式,责任链模式以及包裹模式三个重要的设计模式的演示代码,是用java写的。非常适合初学设计模式的人学习,因为大多数的人学习设计模式只是停留在理论阶段,但是实际上需要自己去写出具体的...

    研磨设计模式(完整带书签).part2.pdf

    第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式...

    设计模式精解 译者:熊节 程序员必看书籍之一 part2

    本书从一个新的视角描述面向对象设计,将面向中对象编程的原则与运用设计模式力量创建健壮、可靠的软件开发环境结合起来。书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的...

    研磨设计模式(完整带书签).part1.pdf

    第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式...

    Learning+PHP设计模式

    通过学习如何在代码中使用设计模式,可以更高效地构建服务器端应用,在这个过程中,你的PHP编程水平也将逐步提高。本书利用大量浅显易懂的例子告诉你如何应用多种面向对象模式,...第14章 利用观察者模式构建多设备CMS

    体系结构学习代码!特别详细丰富

     【例6.19】事件体系结构-观察者模式-温度显示  【例6.21】层次架构-软件测试  【例6.22】层次架构-银行- Access数据库  【例6.23】MVC架构-二手车拍卖-无观察者  【例6.24】MVC架构-二手车拍卖-观察者-3...

    研磨设计模式.part3(共4个)

    第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式...

    研磨设计模式.part2(共4个)

    第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式...

    研磨设计模式.part4(共4个)

    第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式...

Global site tag (gtag.js) - Google Analytics