Java中使用Observer接口和Observable类实践Observer观察者模式
在Java中通过Observable类和Observer接口实现了观察者模式。实现Observer接口的对象是观察者,继承Observable的对象是被观察者。
|
void addObserver(Observer o)
|
|
setChanged();
notifyObservers();
|
|
void update(Observable o, Object arg)
|
package designpattern_observer;
import java.util.Observable;
public class MyButtonObserable extends Observable {
private String clickMode;
public String getClickMode() {
return clickMode;
}
public void setClickMode(String clickMode) {
this.clickMode = clickMode;
this.setChanged();
this.notifyObservers(clickMode);
}
}
package designpattern_observer; import java.util.Observable;
import java.util.Observer; public class MyTextBoxAbserver implements Observer {
@Override
public void update(Observable o, Object arg) {
if (arg.toString().equals("double clicked")) {
System.out.println("你对按钮执行了双击操作.");
}
}
}
Test类:
package designpattern_observer;
public class ObserverTest {
public static void main(String[] args) {
MyButtonObserable button = new MyButtonObserable();
MyTextBoxAbserver textbox = new MyTextBoxAbserver();
button.addObserver(textbox);
button.setClickMode("double clicked");
}
}
执行入口函数,调用 button.setClickMode("double clicked"),则触发MyTextBoxAbserver 对象的update方法,打印输出:
你对按钮执行了双击操作.
Java中使用Observer接口和Observable类实践Observer观察者模式的更多相关文章
- 利用Java提供的Observer接口和Observable类实现观察者模式
对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...
- Java Observer接口和Observable类实现观察者模式
对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...
- Java常用类库--观察者设计模式( Observable类Observer接口)
如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...
- Java 中的集合接口——List、Set、Map
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- 关于JAVA中抽象类和接口的区别辨析
今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...
- java中的标记接口(标签接口)
Java中的标记接口(Marker Interface),又称标签接口(Tag Interface),具体是不包含任何方法的接口.在Java中很容易找到标记接口的例子,比如JDK中的Serialzab ...
- Java中的Serializable接口和transient关键字
Java中的Serializable接口和transient关键字 Table of Contents 1. 向memcached中放数据时遇到NotSerializableException异常 2 ...
- Java中抽象类和接口的介绍及二者间的区别
接口(Interface)和抽象类(Abstract Class)是支持抽象类定义的两种机制. 一.抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称 ...
随机推荐
- C#反射的应用【转】
摘要: 对于反射贫道也是很陌生的,所以趁现在有时间就把反射看了一下,记下笔记!!! 初始听说反射是可以动态的调用程序集,并从中来获取相应的方法和属性,感觉比较神奇,,, 反射的定义:反射(Reflec ...
- eclipse建立cocos2d-x开发环境
前提: 已经安装了eclipse.能够正常开发 android应用 环境:windows 工具:1.已经集成了adt的eclipse,能够开发android应用.没有的,能够下载.下载地址:http: ...
- php 实现二进制加法运算
php实现二进制加法: 思路:没有工作中应用过此场景,但十进制的加法还是经常做的,能不能用十进制加法变相实现呢? 答案是可以的,并且php也提供进制间转换的函数,我的实现使用了 bindec():二进 ...
- JS 把 Wed Jul 15 2015 00:00:00 GMT+0800 转换成2015-07-15
function strlen(str) { var len = 0; for (var i = 0; i < str.length; i++) { var c = str.charCodeAt ...
- CentOS6.3下搭建vsftpd(采用虚拟用户设置)
CentOS6.3如果在安装的时候所有安装选项都打勾的话就含有单间vsftpd必备的软件:vsftpd.pam*.db4* 检查是否安装: [root@centos6 ~]# rpm -qa | gr ...
- hadoop 学习
不同版本间Hadoop拷贝 通过NFS,将hdfs挂在到本地
- UTL_FILE 的用法
UTL_FILE 的用法 UTL_FILE 是用来进行文件IO处理的专用包,使用这外包的注意事项如下: 1. 生成的文件好象只能放置在DATABASE所在的服务器路径中. 2. 生成的文件如何DO ...
- some knowledge t
NSNumber static 看下面例子 gCount可以在Person 文件中使用 在main 中不行 @property()括号中可以填的属性 国际化 OC中的快捷键操作 operation ...
- op cache config
[opcache] ; dll地址 zend_extension=php_opcache.dll ; 开关打开 opcache.enable=1 ; 开启CLI opcache.enable_cli= ...
- Windows 7/Vista 开机自动登录
“Win”+“R”打开命令窗口,输入"control userpasswords2"(不包括引号),或者 “rundll32 netplwiz.dll,UsersRunDll” 回 ...