package com.gh.observer;
import java.util.Observable;
/**
* 被观察者对象
* 必须继承被观察者抽象类
* @author ganhang
*
*/
public class Doll extends Observable{
private int price; public int getPrice() {
return price;
} public void setPrice(int price) {
this.price = price;
this.setChanged();
this.notifyObservers();
} }
 package com.gh.observer;

 import java.util.Observable;
import java.util.Observer; /**
* 观察者对象
* 必须实现观察者的接口
* @author ganhang
*
*/
public class Person implements Observer{
private String name; public Person(String name){
this.name=name;
}
public void update(Observable o, Object arg) {
if(o instanceof Doll){
Doll doll=(Doll) o;
System.out.println(name+"您关注的娃娃价格已经更新为"+doll.getPrice());
}
} }
package com.gh.observer;
/**
* 观察者模式的测试
* @author ganhang
*/
public class test {
public static void main(String[] args) {
Person p=new Person("小白");
Person p1=new Person("小黑");
Doll doll=new Doll();
doll.addObserver(p);//将观察者添加到被观察者的集合中
doll.addObserver(p1);
System.out.println("第一轮促销");
doll.setPrice(1999);
System.out.println("第二轮促销");
doll.deleteObserver(p1);
doll.setPrice(999);
}
}

输出

第一轮促销
小黑您关注的娃娃价格已经更新为1999
小白您关注的娃娃价格已经更新为1999
第二轮促销
小白您关注的娃娃价格已经更新为999

java学习之观察者设计模式的更多相关文章

  1. Java常用类库——观察者设计模式

    观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房者都可以观察得到.实际上以上的购房者都属于观察者,他们都关注着房子的价格. 如果要想实现观察者模式,则必须依 ...

  2. java学习面向对象之设计模式之单例模式

    就像上一节当中我们讲到的数组工具集一样,如果我们把他看作一个类,来应用,不阻止他new函数的话,这个类我们在整个过程当中我们只是用他来当一个工具.假如每次用都要new一下产生一个新对象的话,就会显得整 ...

  3. Java常用类库--观察者设计模式( Observable类Observer接口)

    如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...

  4. Java学习之DAO设计模式

    DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...

  5. JAVA学习笔记--策略设计模式与适配器模式

    一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分.策略就是传递进去的参数对象,它包含要执行 ...

  6. 【Java语言特性学习之一】设计模式

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  7. Java事件监听机制与观察者设计模式

    一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...

  8. (java)从零开始之--观察者设计模式Observer

    观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...

  9. Java学习笔记(05)

    目录: static的用法 主函数的定义 增强for的循环 单例设计模式 封装 一.Static的用法 1.对象的内存分析 对象的引用变量是存在于栈区,而在堆区开辟了一块内存空间,调用对象给成员变量赋 ...

随机推荐

  1. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

  2. CUG 数学进阶

    题目链接:http://acm.cug.edu.cn/JudgeOnline/contest.php?cid=1047 . . . I 题目链接:http://acm.cug.edu.cn/Judge ...

  3. css布局: 两栏 自适应高度

    只使用css实现 有两种方式, 一种是通过相对定位,再绝对定位获取父亲元素的高度, 一种是通过margin-bottom:-999em;padding-bottom: 999em; 父亲元素超出隐藏 ...

  4. 关于appcompat v7出现的问题

    一.问题描述: 新建了一个MIN-SDK为API 8的工程之后,TARGET-SDK为API 17的Android工程之后,自动生成的appcompat v7会提示“v7/value21:no res ...

  5. IOS 使用程序外地图(IOS Map and google Map)

    1.调用IOS6苹果地图 IOS6中实现这个功能需要使用Map Kit中的MKPlaceMark和MKMapItem两个类,因此我们需要在工程中添加MapKit.framework主要代码如下: - ...

  6. SPSS19.0实战之聚类分析

    这篇文章与上一篇的回归分析是一次实习作业整理出来的.所以参考文献一并放在该文最后.CNBlOG网页排版太困难了,又不喜欢live writer…… 聚类分析是将物理或者抽象对象的集合分成相似的对象类的 ...

  7. 共享内存操作类(C#源码)

    原文 http://blog.csdn.net/yefanqiu/article/details/1717458 VC++的共享内存操作代码实现起来相对比较容易,但是用C#语言来实现,就有一定难度,由 ...

  8. 面试题:对一个正整数n,算得到1需要的最少操作次数

    实现一个函数,对一个正整数n,算得到1需要的最少操作次数.操作规则为:如果n为偶数,将其除以2:如果n为奇数,可以加1或减1:一直处理下去.例子:func(7) = 4,可以证明最少需要4次运算n = ...

  9. 推荐一些socket工具,TCP、UDP调试、抓包工具 推荐一些socket工具,TCP、UDP调试、抓包工具

    还记得我在很久很久以前和大家推荐的Fiddler和Charles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用.好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控. 假如有 ...

  10. 在cnblog中使用syntax方法

    <pre name="code" class="brush: cpp;"> 代码 </pre> #include<cstdio&g ...