社区
Java
帖子详情
读了阎宏博士的观察者模式...
zhangyunpeng
2004-10-21 09:20:03
这个模式和我现在做的这个业务很吻合。
业务是这样的:用户添写自己的提醒信息,包括提醒时间,提醒内容。当系统时间和用户的提醒时间相等的时候,便执行给该用户发送email的操作。
系统时间是被观察者,而用户设置的提醒时间是观察者,系统时间如果发生变化的时间,便会通知每一个观察者。
不知道我这样理解对不对,请大家指教.
...全文
571
12
打赏
收藏
读了阎宏博士的观察者模式...
这个模式和我现在做的这个业务很吻合。 业务是这样的:用户添写自己的提醒信息,包括提醒时间,提醒内容。当系统时间和用户的提醒时间相等的时候,便执行给该用户发送email的操作。 系统时间是被观察者,而用户设置的提醒时间是观察者,系统时间如果发生变化的时间,便会通知每一个观察者。 不知道我这样理解对不对,请大家指教.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xlyyc
2005-03-21
打赏
举报
回复
mark
catblue
2004-12-01
打赏
举报
回复
学习
jeffyan77
2004-11-01
打赏
举报
回复
streamer技术本身是有专利和版权的,不能讲得太多。不过TCP是connection oriented,TCP Socket以stream通讯为基础,能够发送stream的服务器,就是streamer,这是大家都能想得到的。
quanquan626
2004-11-01
打赏
举报
回复
学习
jeffsonxl
2004-11-01
打赏
举报
回复
"解决这个问题需要采用socket编程,使用一种通常称作streamer的技术,这基本上就是华尔街编程的顶级层次了", 阉博士,能不能讲的再具体些,谢谢.
cold_blooded
2004-10-31
打赏
举报
回复
楼上说的有理,
表示钦佩,
不过对于楼主的应用,
愚见认为没问题.
jeffyan77
2004-10-29
打赏
举报
回复
扫描的方法在一些简单情况下是可以的,但是不值得推荐。在很多情况下,扫描行不通。
扫描是pull架构,也就是使用端不断要求服务端提供某状态,以便在服务端状态发生某种变化的时候采取某行动。这会造成大量无用的请求和回复。
观察者模式可以用来实现push架构,也就是服务端在内部状态满足某一条件的时候,主动通知使用端,以便使用端采取某行动。只有在满足条件的时候,服务端才发通知,使用端才有行动。这在最大程度上节省了系统资源,提高了系统的效率。
在观察者和被观察者同处于一个JVM的情况下,观察者模式本身就足以提供push架构。
在两者处于不同的JVM中的时候,观察者模式本身不能解决push架构的功能问题。一个最为常见的例子,就是股票价格的报价系统。假设你有一个Java Applet放到网页上,不断显示某些股票的价格。如果由使用端不断向服务器请求这些价格,不论这些价格有没有变化,那么系统根本无法承受大量客户。经过我们的测试估计,在美国股市情况下,这种盲目的请求和报价的99%是无用的。换言之,为了支持譬如10万个用户,你需要大量的系统资源,特别是硬件资源,但是99%都被浪费掉了,就是因为软件设计的缺陷。
如果能够采取push架构,如果原先支持10万人需要200台服务器,现在只需要两台服务器。在从两台加到20台,就可以轻而易举地支持100万个用户。
当然,观察着模式本身并不能够解决这个报价系统中所有的问题,采取具有合适功能的技术,辅助以观察者模式才能真正实现push架构。HTTP协议不能有效支持push,一个http服务器不能在自己认为合适的时候,主动向使用端发出信息。JDBC也不能从数据库服务器主动送出数据,J2EE技术本身也没有提供相关的功能。这当然不是一个设计模式能够解决的。解决这个问题需要采用socket编程,使用一种通常称作streamer的技术,这基本上就是华尔街编程的顶级层次了。
treeroot
2004-10-29
打赏
举报
回复
可以指定的时间间隔扫描一次
zwp315
2004-10-28
打赏
举报
回复
顶~~
wwwer1
2004-10-21
打赏
举报
回复
是观察者一直在关注的周围环境的变化(当然不一定是精确到每一秒)
这就需要监听机制。建立一个listener类,要保证这个类在系统运行期间不被垃圾收集器收集。
然后,过一定的单位时间就检查一次业务逻辑。这个业务逻辑和单位时间是你来设定的。
zx209
2004-10-21
打赏
举报
回复
想学模式了
tom2005
2004-10-21
打赏
举报
回复
学习
《JAVA与模式》之
观察者模式
本文介绍了JAVA中的
观察者模式
,包括模式结构、推模型和拉模型,详细讲解了JAVA提供的Observable类和Observer接口,以及如何使用它们来支持
观察者模式
。通过具体的代码示例展示了
观察者模式
的实现和通知机制。
观察者模式
详解
本文深入介绍了
观察者模式
的概念、结构及应用,包括推模型和拉模型的区别与应用场景,并提供了Java语言实现
观察者模式
的示例代码。
大话设计模式(五)
观察者模式
本文介绍了
观察者模式
的概念、结构及应用场景。
观察者模式
定义了一种一对多的依赖关系,允许对象间定义一种订阅机制,一个对象的状态变化会自动通知其它多个观察对象,而不需要知道这些观察者是谁。
观察者模式
:推模式和拉模式
本文深入介绍了
观察者模式
的概念、结构及应用,包括推模型和拉模型的区别,并提供了Java语言的具体实现案例。
观察者模式
本文深入讲解了
观察者模式
的概念及其实现方式,包括推模型和拉模型的区别,并提供了Java语言的具体实现案例。
Java
51,408
社区成员
86,093
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章