java学习之观察者设计模式
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学习之观察者设计模式的更多相关文章
- Java常用类库——观察者设计模式
观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房者都可以观察得到.实际上以上的购房者都属于观察者,他们都关注着房子的价格. 如果要想实现观察者模式,则必须依 ...
- java学习面向对象之设计模式之单例模式
就像上一节当中我们讲到的数组工具集一样,如果我们把他看作一个类,来应用,不阻止他new函数的话,这个类我们在整个过程当中我们只是用他来当一个工具.假如每次用都要new一下产生一个新对象的话,就会显得整 ...
- Java常用类库--观察者设计模式( Observable类Observer接口)
如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...
- Java学习之DAO设计模式
DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...
- JAVA学习笔记--策略设计模式与适配器模式
一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分.策略就是传递进去的参数对象,它包含要执行 ...
- 【Java语言特性学习之一】设计模式
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
- Java事件监听机制与观察者设计模式
一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...
- (java)从零开始之--观察者设计模式Observer
观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...
- Java学习笔记(05)
目录: static的用法 主函数的定义 增强for的循环 单例设计模式 封装 一.Static的用法 1.对象的内存分析 对象的引用变量是存在于栈区,而在堆区开辟了一块内存空间,调用对象给成员变量赋 ...
随机推荐
- Cocos2d-x3.0 捕Android菜单键和返回键
原文地址:http://blog.csdn.net/qqmcy/article/details/26172665 .h void onKeyReleased(EventKeyboard::KeyCod ...
- pcre函数具体解释
PCRE是一个NFA正则引擎,不然不能提供全然与Perl一致的正则语法功能.但它同一时候也实现了DFA,仅仅是满足数学意义上的正则. PCRE提供了19个接口函数,为了简介,使用PCRE内带的測试程序 ...
- Arcgis for javascript不同的状态下自己定义鼠标样式
俗话说:爱美之心.人皆有之. 是的.没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点. 在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式. 首先.说 ...
- Amazon S3 API
一.概述 Amazon s3,全称为Amazon Simple Storage Service.EC2和S3是Amazon最早推出的两项云服务. REST,这也是比较火的一种Web服务架构.简单来说 ...
- SqlServer 2015修改表时出现“save changes is not permitted…”的解决方法
使用SqlServer 2015的过程中,会出现如下情况: 在修改完表字段名或是类型后点击保存时会弹出一个对话框,且无法保存已做的修改.对话框内容大致如下: Saving changes is not ...
- C++知识点整理——持续更新
virtual是C++的一个关键字,virtual修饰的函数可以被子类重写. 用法:在返回值类型的前面添加关键字即可. override是C++的保留字(注意不是关键字),表示当前函数重写了基类的 ...
- 帝国cms7.0调用出栏目下的东西
打开帝国后台,新建一个栏目,简历一个封面模板为 abc,套用一个封面栏目. [e:loop={"select * from {$dbtbpre}enewsclass where classi ...
- Node.mysql
mysql为常用数据库,下面简单记录在nodejs中操作mysql数据库的简单实现. 环境: nodejs4.2.2 mysql5.7.12 win7 参考资料: npm mysql 代码 var m ...
- 外网訪问内网应用实现之无公网IP、多port、固定port、UDP等应用的实现方法
有公网IP时,能够通过路由映射来实现外网訪问内网.然,当没有公网IP时,怎样实现外网訪问内网应用? 硬件路由方法因为无公网不可行,能够使用软件port映射的方法.如开放的NAT123全port映射. ...
- [置顶] JDK-CountDownLatch-实例、源码和模拟实现
Conception A synchronization aid that allows one or more threads to wait until a set of operations b ...