张子阳 TraceFact
It's not rocket science; To be the master of .Net ...
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
53 随笔 :: 0 文章 :: 1086 评论 :: 69 Trackbacks
重温Observer模式--热水器·改
posted on 2008-06-18 23:39
Jimmy Zhang
阅读(839)
评论(15)
编辑
收藏
所属分类:
Design & Pattern
评论
#1楼
2008-06-24 07:45
yangjun
我觉得你的文章对我的帮助很大。一有更新就跑过来看看了。呵呵。谢谢了
回复
引用
查看
#2楼
[
楼主
]
2008-06-24 12:21
Jimmy Zhang
@yangjun
谢谢关注 :-)
回复
引用
查看
#3楼
2008-06-26 11:08
bartholomew
呵呵,刚看了你写的热水器那篇文章,接着就看到还有个续,讲得真好,对Observer模式的理解又深了一层~
回复
引用
查看
#4楼
2008-07-11 01:47
yellowyu
想问一下,比如两个观察者之间要相互调用,比如现在两个窗口,在实现观察者模式的前提下,是不是A窗口就得告诉SUBJECT,让他通知所有观察者,然后A,B窗口再改?
这问题一直想想不大清?谢谢!
回复
引用
查看
#5楼
2008-07-11 16:06
Selfocus
不错哈,受益匪浅,谢谢!
回复
引用
查看
#6楼
2008-07-11 22:17
hometown [未注册用户]
博主的写作风格我非常喜欢,本人以积极的姿态向你学习!
博主对一种方法、技术或是模式的思考与理解方式更令我震撼与钦佩(不像绝大多数人总是在告诉我们怎么做,首先提出一大堆晦涩难懂的定义或是公理,而并未告诉我们最想知道的-为什么要这样做,博主偏偏看到了这一点,从一个问题出发,来引出自己所要讲述的主题,这样使大家更易理解与掌握),这一点本人更要向你取经!
希望博主以后能多出一些自己理解的精品博文,我看好你哦:)!
回复
引用
#7楼
2008-07-11 22:19
hometown [未注册用户]
对了,这一次的为什么没有转成pdf文件啊!
回复
引用
#8楼
[
楼主
]
2008-07-12 11:53
Jimmy Zhang
@hometown
哈哈,过奖啦,我还会继续努力的 ^O^
至于为什么没有转成PDF,主要是因为维护太多个版本比较麻烦。因为写完了发表了可能发现还有错别字什么的要改,因为我本地有一个Word版本的,网上有一个HTML版本的,如果再一个PDF版本的,一个错误我需要修改3处,所以干脆不提供PDF了,这样我只用维护两个版本就好了。
回复
引用
查看
#9楼
[
楼主
]
2008-07-12 12:06
Jimmy Zhang
@yellowyu
能不能说得在详细点,两个观察者之间调用和subject有什么关系呢?subject只是事件发生时通知观察者啊。 如果要在事件发生时两个观察者之间交互,可以把交互的代码写在订阅事件的方法中。
回复
引用
查看
#10楼
2008-07-12 22:24
yellowyu
对不起,没表达清楚,下面偶画出来,可能能清楚点,谢谢
以上是小弟偶半年来做的一个UI的模块的样子,从下层控制层出来的都是小弟做的很糟糕设计,现在回过头来是一个劲的后悔,除了功能的实现外,设计上是看不到半点呀,简直就是想到那写到那,日益庞大和需求的改变让偶很烦,借鉴于观察者模式小弟改成下面这样子(其上每个框框都是一个窗体类,主窗体有业务窗体,VOIP窗体等两个子窗体,业务窗体是较具体业务窗体的父窗体)
此时就有了小弟上面提到的一个问题,比如我业务窗体点击了一下"开始会议",我的VOIP窗体要相应的改变,而我的VOIP窗体点了一下挂断,要相应通知MAIN,业务窗体(并且自已)做出相应的改变,而此时就应该是窗体调SUBJECT的某个函数让其发出消息,每个OBSERVER接到则做出相应的改变?那此三个主要功能的窗体下的子窗体呢?是否要做成观察呢?(有些功能是很小的)
注:图里写错了,是UI控制层(含数据)
这是WEB形式的系统较少出现的情况,希望我的表达能清楚,
而此时我又想到了中介者模式,感觉每种方法都有其缺点!嘿嘿!
总体感觉上我的界面上的东西都牵在一起,但这是很具体的东西,是客户要求的,一个功能是多个界面显示的,所以我今天突然想到中介者,思路是乱七八糟,表达也是,只怪偶语文没学好,如大哥还看不懂的话小弟再详述,只要大哥有兴趣!
谢谢
回复
引用
查看
#11楼
[
楼主
]
2008-07-16 08:27
Jimmy Zhang
Web 形式上,一个窗体进行操作之后改变另一个窗体的显示,由于Web本身的机制是很难做到的。具体我也没有好的办法,有些模式只是在windows窗体下比较适用。
回复
引用
查看
#12楼
2008-07-25 21:24
网络战士 [未注册用户]
博主:
我在你这里学到了好多东西,你写的东西真的是浅进深出。呵呵
回复
引用
#13楼
2008-08-08 08:44
yatasoft
我读过您的第一篇C#中的委托和事件,真的是深入浅出,收获很大,在这谢谢的的好文章,这次看到你出续集,特跑来看看o(∩_∩)o...。
我对你这个Observer推模式还是比较感兴趣的,虽然您说“BoiledEventArgs,但是和.Net中的内置类型EventArgs没有任何联系”。我感觉还是和.Net的EventArgs很像的,也是把观察者对触发者的感兴趣的状态“推给观察者用”。
你后面的的拉模式,我个人不是很喜欢,我觉得这样做的话观察者还是要依赖具体SubjectBase 的,这这样是不是相互耦合太多了呢,我觉得Observer和Subject各自按接口编程,独立变化,解藕比较好,对了微软的事件中的Sender是拉模式吧,还有EventArgs是不是推模式吧,呵呵我还是初学者,可能考虑的不对,请多多指教。
回复
引用
查看
#14楼
2008-08-08 08:47
yatasoft
真不好意思,急于问你问题,看到拉模式就问您问题了,原来文章的最后你已经给出我的疑问答案了,哈哈,不好意思哈
回复
引用
查看
#15楼
[
楼主
]
2008-08-08 09:29
Jimmy Zhang
@yatasoft
嘿嘿,没什么哒
回复
引用
查看
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
.NET设计模式系列文章
【转】重温Observer模式--热水器·改
设计模式(19)-Observer Pattern
.NET设计模式(19):观察者模式(Observer Pattern)
.NET设计模式(2):单件模式(Singleton Pattern)
.NET设计模式(3):抽象工厂模式(Abstract Factory)
相关链接:
所属分类的其他文章:
[记]一个逐步“优化”的范例程序
[记]SAF 中抽象工厂的实现
重温Observer模式--热水器·改
MVP 模式实例解析
[译]模型-视图-提供器 模式
[译]开闭原则
[记]SAF 中缓存服务的实现
自反+递归 实现评论的无限引用
基于业务对象(列表)的排序
基于业务对象(列表)的筛选
最新IT新闻:
淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略
微软研究院发布 AutoCollage - 整理并融合照片
2008年9月5日科技博客精选
SNS网站风靡影响工作效率 公司下令封杀
《孢子》正式发布
博客园新闻频道
博客园首页
社区
公告
英文名:Jimmy Zhang
主 页:
TraceFact.Net
职 业:.NET开发
城 市:中国·西安
出 生:1982-12
正在翻译(合译)...
助友推介
《你必须知道的.Net》(王涛)
《WCF 揭秘》(图灵)
《Asp.Net Ajax 实战》(图灵)
留言簿
(40)
给我留言
查看留言
我参与的团队
Design & Pattern团队(0/856)
软件项目管理团队(0/197)
CLR基础研究团队(1/386)
数据库团队(0/251)
框架设计团队(0/26)
博客园精华集出版(0/43)
随笔分类
(52)
Algorithms
(rss)
Asp.Net(12)
(rss)
C# Programming(6)
(rss)
CLR & .Net Framework(10)
(rss)
DataBase(1)
(rss)
Design & Pattern(16)
(rss)
Misc(7)
(rss)
随笔档案
(48)
2008年8月 (2)
2008年7月 (5)
2008年6月 (3)
2008年5月 (7)
2008年4月 (2)
2008年3月 (4)
2008年2月 (2)
2008年1月 (3)
2007年12月 (4)
2007年11月 (1)
2007年10月 (2)
2007年9月 (4)
2007年8月 (9)
网上邻居
Anytao
(rss)
Artech
(rss)
Jill Zhang
(rss)
LoveCherry
(rss)
钢钢(xugang)
(rss)
红色黑客
(rss)
图灵教育
(rss)
杨正祎(阿一)
(rss)
周公的专栏
(rss)
积分与排名
积分 - 147860
排名 - 250
最新评论
1. re: C# 中的委托和事件
@许易 一个委托多个事件?定义一个委托类型,然后声明多个事件么?这个很容易的呀,还是我误解你的意思了? 另外我还写了篇关于 委托和事件 的文章,你看下有没有你要找的答案: ...
--Jimmy Zhang
2. re: C# 中的委托和事件
希望可以告诉以下一个委托多个事件的用法!万分感谢!
--许易
3. re: C# 中的委托和事件
看了上面的文章让我对委托和事件的认识更清晰了,非常感谢!
希望楼主以后可以多发表一些这样的文章!
--许易
4. re: .Net Remoting(远程方法回调) - Part.4
问过lz很多问题,都是给你发邮件给我回复的,赞!
--hier
5. re: C# 中的委托和事件
文章写得很通俗易懂,赞一个
--lp
阅读排行榜
1. C# 中的委托和事件(28093)
2. [译]五层逻辑构架设计(4758)
3. C# 类型基础(4444)
4. [译].Net3.5 和 VS2008 中的 Asp.Net Ajax(4399)
5. Asp.Net构架(Http请求处理流程) - Part.1(4335)
6. Asp.Net 可定制分页用户控件(3990)
7. Web站点风格切换的实现(3668)
8. [译]LINQ TO SQL 介绍(概念和基本操作) – Part.1(3360)
9. 自反+递归 实现评论的无限引用(3228)
10. 数据库对象命名参考(3223)
评论排行榜
1. C# 中的委托和事件(293)
2. 也谈成功(71)
3. C# 类型基础(53)
4. Asp.Net 构架(Http Handler 介绍) - Part.2(52)
5. 自反+递归 实现评论的无限引用(42)
Powered by:
博客园
Copyright © Jimmy Zhang