社区
Java
帖子详情
读了阎宏博士的观察者模式...
zhangyunpeng
2004-10-21 09:20:03
这个模式和我现在做的这个业务很吻合。
业务是这样的:用户添写自己的提醒信息,包括提醒时间,提醒内容。当系统时间和用户的提醒时间相等的时候,便执行给该用户发送email的操作。
系统时间是被观察者,而用户设置的提醒时间是观察者,系统时间如果发生变化的时间,便会通知每一个观察者。
不知道我这样理解对不对,请大家指教.
...全文
522
12
打赏
收藏
读了阎宏博士的观察者模式...
这个模式和我现在做的这个业务很吻合。 业务是这样的:用户添写自己的提醒信息,包括提醒时间,提醒内容。当系统时间和用户的提醒时间相等的时候,便执行给该用户发送email的操作。 系统时间是被观察者,而用户设置的提醒时间是观察者,系统时间如果发生变化的时间,便会通知每一个观察者。 不知道我这样理解对不对,请大家指教.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 与模式》作者
阎宏
博士
(PDF).rar
例如,工厂模式用于创建对象,单例模式确保类只有一个实例,
观察者模式
则实现了对象之间的依赖关系管理。 书中不仅涵盖了创建型、结构型和行为型三大类设计模式,还讨论了如何在实际项目中选择和组合不同的模式,...
Java与模式(
阎宏
)高清晰完整PDF版
除了这些,书中还涵盖了其他多种设计模式,如单例模式(确保一个类只有一个实例,并提供一个全局访问点)、建造者模式(将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示)、
观察者模式
(定义...
java与模式-
阎宏
4. 行为型模式:包括职责链模式、命令模式、解释器模式、迭代器模式、备忘录模式、
观察者模式
、状态模式、策略模式、模板方法模式和访问者模式。行为型模式关注于对象之间的交互和行为,帮助我们更好地管理复杂的...
Java与模式(
阎宏
著)源码
4. **行为型模式**:这些模式关注对象间如何交互和分配责任,如命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、
观察者模式
(Observer)、状态模式(State)、...
java与模式光盘源码
例如,
观察者模式
在事件驱动编程中非常常见,它使得多个对象能监听某个对象的状态变化并作出相应反应。而策略模式则常用于算法的封装和选择,允许在运行时动态切换不同的算法策略。 总的来说,《Java与模式》光盘...
Java
51,395
社区成员
85,835
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章