- 浏览: 79982 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
hanlingbo2008:
问题:
空中巴士(airbus)、波音(Boeing)、麦道 ...
桥梁(Bridge)模式 -
hanlingbo2008:
从Enueration到Iterator的适配
publ ...
适配器模式(Adapter) -
hanlingbo2008:
从Iterator到Enueration的适配
publ ...
适配器模式(Adapter)
12.1 java语言对观察者模式的支持
在java语言的java.util库里面,提供一个Observable类以及Observer接口,构成java语言对观察者模式的支持。
例子代码:
import java.util.Observer; import java.util.Vector; //java 库中的类,非用户定义的类,可以直接调用 public class Observable { private boolean changed = false; private Vector obs; public Observable() { obs = new Vector(); } public synchronized void addObserver(Observer o) { if (o == null) throw new NullPointerException(); if (!obs.contains(o)) { obs.addElement(o); } } public synchronized void deleteObserver(Observer o) { obs.removeElement(o); } public void notifyObservers() { notifyObservers(null); } public void notifyObservers(Object arg) { Object[] arrLocal; synchronized (this) { if (!changed) return; arrLocal = obs.toArray(); clearChanged(); } for (int i = arrLocal.length-1; i>=0; i--) ((Observer)arrLocal[i]).update(this, arg); } public synchronized void deleteObservers() { obs.removeAllElements(); } protected synchronized void setChanged() { changed = true; } protected synchronized void clearChanged() { changed = false; } public synchronized boolean hasChanged() { return changed; } public synchronized int countObservers() { return obs.size(); } }
public interface Observer { void update(Observable o, Object arg); }
import java.util.Observable; public class Watched extends Observable{ private String data = ""; public String retrieveData(){ return data; } public void changeData(String data){ if ( !this.data.equals( data) ) { this.data = data; setChanged(); } notifyObservers(); } }
import java.util.Observable; import java.util.Observer; public class Watcher implements Observer{ public Watcher(Watched w){ w.addObserver(this); } public void update( Observable ob, Object arg){ System.out.println("Data has been changed to: '" + ((Watched)ob).retrieveData() + "'"); } }
import java.util.Observer; public class Tester { static private Watched watched; static private Observer watcher; public static void main(String[] args) { watched = new Watched(); watcher = new Watcher(watched); watched.changeData("In C, we create bugs."); watched.changeData("In Java, we inherit bugs."); watched.changeData("In Java, we inherit bugs."); watched.changeData("In Visual Basic, we visualize bugs."); } }
发表评论
-
java.io包学习1
2008-11-27 10:23 1181转自:http://www.blogjava.net/cher ... -
java.io包学习
2008-11-27 10:22 12831. java.io 包中定义了多个流类型来实现输入和输出功 ... -
15、装饰模式(Decorator)
2008-11-25 11:57 720装饰模式(Decorator)使用原来被装饰的类的一个子类的实 ... -
14.1、安全合成模式和透明合成模式
2008-11-25 11:33 832安全合成模式代码: public interface Comp ... -
14. 合成模式(composite)
2008-11-25 11:27 1086合成模式(composite)把部分和整体的关系用树结构表示出 ... -
java八种基本类型
2008-11-24 11:55 5777Java语言提供了八种基本类型。六种数字类型(四个整数型,两个 ... -
命令模式(Command)例子2增加宏命令
2008-11-23 12:00 1209命令模式(Command)例子2增加宏命令 为julia的 ... -
命令(Command)模式例子2
2008-11-23 11:47 983命令(Command)模式例子2 -------- Audio ... -
java内的命令(Command)模式例子
2008-11-23 11:17 1545命令模式例子------创世纪系统 系统开始时,世界是个黑 ... -
命令(Command)模式
2008-11-23 10:59 94513、命令(Command)模式 命令模式( ... -
JDOM对xml文件的读写API
2008-11-18 11:05 1448根据jdom自带的例子总结 1. org.jdom.in ... -
JDOM对xml文件的读写
2008-11-18 10:19 20641. 读取例子 xml文件代码 <?xml ve ... -
Java Reflection API 简介
2008-11-16 12:40 1450在JDK中,主要由以下类来实现Java反射机制,这些类都位于j ... -
Java 语言的反射机制
2008-11-16 12:22 675在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属 ... -
模板方法模式中的方法
2008-11-15 22:50 74111.2 、模板方法模式中的方法 基本方法: 抽象方 ... -
模板方法模式的一个例子
2008-11-15 22:34 111911.1 模板方法例子 考虑一个银行存款例子 ... -
模板(Template Method)方法模式
2008-11-15 22:11 91411、模板(Template Method)方法模式 ... -
不变(Immutable)模式
2008-11-15 21:44 80410、不变(Immutable)模式 定义: ... -
桥梁(Bridge)模式
2008-11-15 13:01 10329、桥梁(Bridge)模式 桥梁模式的结构 ... -
门面模式(Facade)
2008-11-15 12:21 11138、门面模式(Facade) 门面角色(Facade): 供 ...
相关推荐
请根据观察者模式,用Java语言设计并实现气象站程序。其中,部分代码已经写好,包括: • 观察者接口 • 主题接口 • 显示板接口 • 测试程序 请在此框架下,继续完成CurrentConditionsDisplay、ForecastDisplay...
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
采用Java语言编写的一个观察者模式实例。观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,...
观察者设计模式,java语言实现,完全自己代码实现,未使用observable和observer
设计模式之观察者模式,java语言实现 设计模式之观察者模式,java语言实现 设计模式之观察者模式,java语言实现 设计模式之观察者模式,java语言实现
KWIC 程序示例 事件风格 观察者模式的程序代码,使用的是Java语言。
用原始的java语言写的观察模式 雅典娜和圣斗士 雅典娜充当观察者
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之...
logo 15观察者模式:观察者接口和类、主题接口观察者模式:观察者接口和类、主题接口 设计模式(JAVA语言实现)--20种设计模式附带源码PPT模板全文共22页,当前为第16页。 logo 16迭代器模式:定义迭代器和聚集接口...
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
用JAVA语言编写的一个小程序,功能是模拟股票价格波动,只是个很小的程序。。。。
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
观察者体系结构开发的微博程序,使用JAVA语言,软件体系结构课程的实验
内容包括设计模式概述、面向对象设计原则、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式...录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式...
策略模式、观察者模式、装饰模式、适配器模式、单例模式、工厂方法模式、门面模式,java语言实现的例子。
设计模式实例,java语言开发。 包括:工厂模式,观察者模式,装饰模式和桥梁模式。
对象间的联动——观察者模式,处理对象的多种状态及其相互转换——状态模式,算法的封装与切换——策略模式,模板方法模式深度解析,操作复杂对象结构——访问者模式,设计模式与足球,多人联机射击游戏中的设计模式...
第十一节 观察者模式 第十二节 策略模式 第十三节 建造者模式 第十四节 适配器模式 第十五节 桥接模式 第十六节 装饰器模式 第十七节 迭代器模式 第十八节 中介者模式 第十九节 备忘录模式 第二十节 状态模式 第二十...
工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式、策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、...