张玉丰
一个程序员的破笔记本。。。
随笔 - 382 文章 - 14 评论 - 509
博客园
首页
新随笔
联系
管理
订阅
Java内置的“观察者”
目前还不知道为什么JAVA里会内置观察者模式的实现,不过据说观察者是JDK中最常见的设计模式了……
还是技术支持中心选“三八红旗手”的事儿,subject(主题)的代码:
package
subject;
import
java.util.Observable;
public
class
Center38
extends
Observable
{
private
int
a;
private
int
b;
private
int
c;
public
void
measurementsChanged()
{
setChanged();
notifyObservers();
}
public
void
setABC(
int
a1,
int
b1,
int
c1)
{
this
.a
=
a1;
this
.b
=
b1;
this
.c
=
c1;
measurementsChanged();
}
public
int
getA()
{
return
a;
}
public
int
getB()
{
return
b;
}
public
int
getC()
{
return
c;
}
}
可以发现,嘿嘿,不用自己写接口了(自由度下降了),下面是 observer(观察者)要实现的接口:
package
observer;
public
interface
Iuser
{
public
void
display();
}
简单吧,简单的不成样子了,然后是观察者的代码:
package
observer;
import
java.util.Observable;
import
java.util.Observer;
import
subject.Center38;
public
class
User1
implements
Observer, Iuser
{
private
int
a1;
private
int
b1;
private
int
c1;
Observable c38;
public
User1(Observable input38)
{
this
.c38
=
input38;
c38.addObserver(
this
);
}
public
void
display()
{
System.out.println(
"
我是刘德华,我收到的最新投票结果是:
"
);
System.out.println(
"
a:
"
+
a1);
System.out.println(
"
b:
"
+
b1);
System.out.println(
"
c:
"
+
c1);
}
public
void
update(Observable ob, Object arg1)
{
if
(ob
instanceof
Center38)
{
Center38 c38
=
(Center38)ob;
this
.a1
=
c38.getA();
this
.b1
=
c38.getB();
this
.c1
=
c38.getC();
display();
}
}
}
同理我还写了user2和user3,大概和user1没区别,于是不粘帖了,最后是测试的代码:
package
test;
import
observer.User1;
import
observer.User3;
import
observer.User2;
import
subject.Center38;
public
class
Test
{
public
static
void
main(String[] args)
{
Center38 c38
=
new
Center38();
User1 u1
=
new
User1(c38);
User2 u2
=
new
User2(c38);
User3 u3
=
new
User3(c38);
c38.setABC(
132
,
1234
,
122
);
}
}
运行结果:
posted on 2008-05-26 09:05
玉米丰收
阅读(83)
评论(3)
编辑
收藏
网摘
所属分类:
×设计模式×
发表评论
回复
引用
查看
2008-05-26 09:08 |
张玉峰
没怎么写注释,急着去医院检查鼻炎,唉。。。
回复
引用
查看
2008-05-26 21:17 |
王兴2008-偶想家了!
借用亚力山大的一句话“我路过,我看到,我顶!”
回复
引用
2008-05-28 10:46 |
郭明浩 [未注册用户]
顶楼上!
图书专题
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-05-26 09:07 编辑过
Google站内搜索
[推荐职位]上海盛大网络招聘架构师
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》
相关文章:
相关链接:
历史上的今天:
2007-05-26
疾风知劲草,板荡识诚臣。勇夫安知义,智者必怀仁。
2007-05-26
把自己放低一点!(自醒)
所属分类的其他文章:
设计模式学习3——装饰者模式(Decorator)
Java内置的“观察者”
设计模式学习2——观察者模式(Observer)
设计模式学习1——策略模式(Strategy)
设计模式学习——设计原则
最新IT新闻:
Palm 发布移动平台webOS和新款智能手机Palm Pre
Google浏览器Chrome 2.0测试版发布
微软中国被指变相裁员 微软称确有过人事调整
“新一代互联网”研究:中国走在世界前列
苏宁首战告捷 销售同比增六成
公告
Data structure and Algorithm。。。
许多转载文章是收藏方便自己学习的,如果引起作者不快请告知,谢谢。
与我联系
发短消息
搜索
留言簿
(13)
给我留言
查看留言
我参加的小组
读书(Books)
程序员音乐空间
设计模式
AJAX
.Net+MySQL
CSS美化组
Community Server
数据库
我参与的团队
数据库团队(0/348)
HiccDS俱乐部(0/844)
随笔分类
(259)
×C语言× (4)
×JAVA×(17)
×Linux×(51)
×MySQL×(9)
×PHP×(5)
×SSH×(6)
×Web应用×(4)
×成长脚印×(31)
×大道至简-算法×(2)
×关于博客×(3)
×设计模式×(5)
×心情故事×(32)
×杂七杂八×(5)
×照片故事×(7)
FMS流媒体(9)
Linux-Fedora Core(21)
Linux-SuSe(5)
Linux-ubuntu(4)
MacOsTiger(5)
PHP+Apache+mysql(9)
收藏柜(25)
随笔档案
(376)
2009年1月 (1)
2008年12月 (6)
2008年10月 (5)
2008年9月 (4)
2008年8月 (14)
2008年7月 (11)
2008年6月 (13)
2008年5月 (17)
2008年4月 (33)
2008年3月 (38)
2008年2月 (73)
2008年1月 (34)
2007年12月 (12)
2007年11月 (20)
2007年10月 (16)
2007年9月 (40)
2007年8月 (1)
2007年7月 (17)
2007年6月 (13)
2007年5月 (6)
2007年4月 (2)
最新随笔
1. 转:JavaScript语言中的Literal Syntax特性
2. c语言-简单学生信息管理(内存链表练习)
3. C语言中的堆管理(内存管理)
4. linux发行版的安装体会
5. 达芬奇睡眠法
6. linux在终端模式显示进度
7. Linux下C语言编程基础(Makefile)
8. java 排序算法四例
9. 算法学习的轨迹
10. SQL语句的挑战
11. 我编程的大学生活
12. windows下的netsta——查看端口占用
13. linux下压缩解压-最简最帅教程
14. 装错MacOS驱动遇四国,简单步骤告别重装
15. NVIDIA显卡驱动标准安装方法!
16. NVIDIA显卡驱动标准安装方法!
17. Zend Studio For Eclipse 6.0 注册码
18. 如何使用OpenSSL创建证书
19. (转)可替换系统(alternatives system)的应用浅议
20. Mac OSX 10.4.8下AC97声卡的完美安装
21. Mac OSX 10.4.8 tiger 下BCM5788网卡的完美安装
22. 方向盘开极品飞车9很Hapyy
23. 静静中的悸动.
24. linux (fc8) 下的IE
25. Linux (FC8)下玩魔兽3(warcraft)及其他游戏
26. FC8 中的一些自己认为比较实际的经验(日常使用)
27. Fedora再次安装手记--很爽的Wine工具
28. Fedora再次安装手记--很爽的YUM工具
29. fedora8编译安装wine
30. Fedora下登录windown系统远程桌面(3389)
31. 流泪的苹果....
32. IE6 IE7 FifeFox 的CSS兼容性问题
33. 宠辱不惊,去留无意
34. 从狭隘到自我设限,再到自我解放.
35. Linux系统信息查看命令大全
36. Linux下Apache2+php5服务器的安装和设置(仅作参考)
37. linux下编译安装php的参数
38. 最近写的一个Mysql存储过程
39. 做饭记
40. 如果不是心中还有梦,又能忍住多少痛?
Google搜索
60天内阅读排行
1. c语言-简单学生信息管理(内存链表练习)(66)
2. 达芬奇睡眠法(62)
3. C语言中的堆管理(内存管理)(38)
4. linux发行版的安装体会(33)
5. linux在终端模式显示进度(33)