c++ Observer模式
来源:互联网 发布:js对象有private 编辑:程序博客网 时间:2024/06/03 12:39
Observer模式应该可以说是应用最多、影响最广的模式之一,因为Observer 的一个实例Model/ Vi ew/Con trol(MVC)结构在系统开发架构设计中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。个人也认为Observer模式是软件开发过程中必须要掌握和使用的模式之一。在MFC中,Doc/Vi ew(文档视图结构)提供了实现MVC的框架结构(有一个从设计模式(Observer 模式)的角度分析分析Doc/ Vi ew的文章正在进一步的撰写当中,遗憾的是时间:))。在Java 阵容中,St ru t s 则提供和MFC中Doc/Vi ew结构类似的实现MVC的框架。另外Java 语言本身就提供了Observer 模式的实现接口,这将在讨论中给出。
当然,MVC只是Observer 模式的一个实例。Observer 模式要解决的问题为:建立一个一(Subjec t)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer 模式就是解决了这一个问题。
当然,MVC只是Observer 模式的一个实例。Observer 模式要解决的问题为:建立一个一(Subjec t)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer 模式就是解决了这一个问题。
这里的目标Subj ec t 提供依赖于它的观察者Observer 的注册(Attach)和注销(Detach )操作,并且提供了使得依赖于它的所有观察者同步的操作(Notify)。观察者Observer 则提供一个Update 操作,注意这里的Observer 的Update 操作并不在Observer 改变了Subj ec t 目标状态的时候就对自己进行更新,这个更新操作要延迟到Subj ec t 对象发出Notify 通知所有Observer 进行修改(调用Update )。
Java 中实现MVC的UML图。
这里的Observer 就是观察者,Observable 则充当目标Subj ec t 的角色。 Observer模式也称为发布-订阅(publish-su bscri b e ),目标就是通知的发布者,观察者则是通知的订阅者(接受通知)。
- C# Observer模式
- Observer设计模式(C++)
- 设计模式----观察者模式Observer(C++)
- Objective-C中的Observer模式实现
- C#Observer设计模式(报警系统)
- Observer模式
- Observer 模式
- observer模式
- Observer模式
- Observer模式
- Observer模式
- Observer模式
- observer模式
- Observer模式
- Observer模式
- observer模式
- OBSERVER 模式
- Observer模式
- 产品经理的自我修养—认知模式
- 微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE平台(四)自习功能
- c# 策略模式
- va_start和va_end使用详解
- JSTL解析——003——core标签库02
- c++ Observer模式
- No Dialect mapping for JDBC type: -1
- STM32使用问题总结
- SEO培训一家之言 素老胡huxingyu
- [cocos2d-x]定时器函数scheduleUpdate
- PB中MessageBox用法大全
- Win32 Series - Child Window Controls
- android 内存分析心得
- hadoop 视频教程