Chinaunix首页 | 论坛 | 博客
  • 博客访问: 628227
  • 博文数量: 155
  • 博客积分: 5688
  • 博客等级: 大校
  • 技术积分: 2134
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-15 15:12
文章分类

全部博文(155)

文章存档

2011年(58)

2010年(97)

分类:

2010-07-26 23:16:13

声明:本文为原创
#####请转贴时保留以下内容######
作者GTT
本文档归属http://oldtown.cublog.cn/.转载请注明出处!
请提出宝贵意见Mail:mtloveft@hotmail.com
提示:本文是介绍C与Observer design pattern
 
软件设计追求的目标就是要High cohesion Loose coupling。模块间要疏松结合,模块内各个元素之间的关系紧密。高内聚也就是高功能内聚,是对软件系统中元素职责相关性和集中度的度量。如果元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,反之则为低内聚性。耦合就是对元素与元素之间的依赖的程度。低耦合也是追求的目标之一。
observer design pattern 就是一个很好的解耦的例子。
A 调用B,如果在A里直接写B的代码,那么A和B就耦合在一起了,任何一个有变化都会
影响另一个。运用observer 就可以很好的解决这个问题,在A里定义一些hook point,
让其他的程序例如B,去完成这些hook point.
最常用的就是MVC就是利用observer的一个实例,还有Event管理等也是很好的利用了
observer design pattern。
高级语言的类图如下
 
这里的目标Subject提供依赖于它的观察者Observer的注册register()和注销unregister()操作,并且提供了使得依赖于它的所有观察者同步的操作notify()。观察者Observer则提供一个update()操作,注意这里的Observer的update()操作并不在Observer改变了Subject目标状态的时候就对自己进行更新,这个更新操作要延迟到Subject对象发出notify通知所有Observer进行修改call update()。
再看C实现的Observer design pattern.也就是通知链表,就是事件通知。
结构如下
 
方法如下
register_netdevice_notifier()
unregister_netdevice_notifier()
notifier_call_chain()
 
是不是跟Observer思想一样。
详细的以后再追加......
 
 
 
阅读(1923) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~