张子阳 TraceFact

It's not rocket science; To be the master of .Net ...

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  53 随笔 :: 0 文章 :: 1086 评论 :: 69 Trackbacks
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窗体下比较适用。
  回复  引用  查看    

博主:
我在你这里学到了好多东西,你写的东西真的是浅进深出。呵呵

  回复  引用    

#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 (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: