会员
商店
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
玉米疯收
博客园
首页
新随笔
联系
管理
订阅
随笔- 455 文章- 16 评论- 791 阅读-
201万
Java内置的“观察者”
目前还不知道为什么JAVA里会内置观察者模式的实现,不过据说观察者是JDK中最常见的设计模式了……
目前还不知道为什么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
);
}
}
运行结果:
分类:
×设计模式×
好文要顶
关注我
收藏该文
微信分享
玉米疯收
粉丝 -
235
关注 -
7
+加关注
0
0
«
上一篇:
博客里的博客
»
下一篇:
设计模式学习3——装饰者模式(Decorator)
posted @
2008-05-26 09:05
玉米疯收
阅读(
440
) 评论(
3
)
编辑
收藏
举报
刷新页面
返回顶部
登录后才能查看或发表评论,立即
登录
或者
逛逛
博客园首页
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
编辑推荐:
·
AI与.NET技术实操系列:基于图像分类模型对图像进行分类
·
go语言实现终端里的倒计时
·
如何编写易于单元测试的代码
·
10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
·
.NET Core 中如何实现缓存的预热?
阅读排行:
·
25岁的心里话
·
闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
·
零经验选手,Compose 一天开发一款小游戏!
·
通过 API 将Deepseek响应流式内容输出到前端
·
因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2007-05-26
疾风知劲草,板荡识诚臣。勇夫安知义,智者必怀仁。
2007-05-26
把自己放低一点!(自醒)
公告
If I rest, I rust.
好记性,不如烂博客!嘻嘻!
友情链接
Python中国
昵称:
玉米疯收
园龄:
17年11个月
粉丝:
235
关注:
7
+加关注
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接
最新随笔
1.[C语言]排序问题--我的解答
2.转载:算法方面的一些书籍和网上资源
3.[C语言]排序问题
4.如何利用css使PNG图片透明
5.So, you think you know JavaScript? (你认为你懂JS吗)
6.不用密码使用ssh管理远程linux服务器
7.[转]mysql性能的检查和调优方法
8.PHP 中巧用数组降低程序的时间复杂度
9.HTTP协议中的5类状态码
10.冬日随笔
积分与排名
积分 - 358753
排名 - 2475
随笔分类
(201)
×CSS× (4)
×C语言× (11)
×Linux×(66)
×MySQL×(15)
×PHP×(19)
×大道至简-算法×(6)
×设计模式×(6)
×杂七杂八×(15)
FMS流媒体(9)
Linux-ubuntu(4)
PHP+Apache+mysql(9)
ubuntu使用笔记(5)
x译者无言X(3)
收藏柜(29)
随笔档案
(455)
2010年3月(1)
2010年2月(2)
2010年1月(3)
2009年12月(6)
2009年11月(4)
2009年10月(5)
2009年9月(5)
2009年8月(13)
2009年7月(7)
2009年6月(4)
2009年4月(7)
2009年3月(11)
2009年2月(4)
2009年1月(11)
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月(19)
2007年10月(14)
2007年9月(40)
2007年8月(1)
2007年7月(17)
2007年6月(13)
2007年5月(6)
2007年4月(2)
推荐排行榜
1. Java学习之Iterator(迭代器)的一般用法 (转)(51)
2. 在Linux里设置环境变量的方法(export PATH)(22)
3. linux各文件夹的作用(15)
4. hibernate集合映射inverse和cascade详解 (8)
5. error while loading shared libraries的解決方法(4)
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
2007-05-26 疾风知劲草,板荡识诚臣。勇夫安知义,智者必怀仁。
2007-05-26 把自己放低一点!(自醒)