设计模式-Observer

设计模式-Observer

ID:38527750

大小:47.00 KB

页数:4页

时间:2019-06-14

设计模式-Observer_第1页
设计模式-Observer_第2页
设计模式-Observer_第3页
设计模式-Observer_第4页
资源描述:

《设计模式-Observer》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MVC结构便是一个经典的Observer的实例。Observer模式要解决的问题就是:建立一个Subject对多个Observer的依靠关系,并且做到当S变化的时候,依靠这个S的诸多O也能够同步改变;一个简单的例子就是,当一组数据变化的时候,所有统计数据的显示方法也需要同时改变。     Observer维护着一个Subject的指针,所以可以直接调用或者由Sub直接NOTIFY各个OBSERVERS.所以该模式也被称为发布-订阅模式,在JAVA中有其固定的MVC框架,并且提供了OBSERVER模式的实现接口。  #include#include

2、g>#includeusingnamespacestd;typedefstringstates; classObserver;classSubjects{public: virtual~Subjects(); virtualvoidAttatch(Observer*obs); virtualvoidDetatch(Observer*obs); virtualvoidNotify(); virtualvoidSetState(conststates&)=0; virtualstatesGetState()=0;private: list*m_ob

3、s;//SAVEALLTHEOBSERVERSprotected: Subjects();};  classConSubjuects:publicSubjects{public: ConSubjuects(){m_st='';} ~ConSubjuects(){} statesGetState(){returnm_st;} voidSetState(conststates&st){m_st=st;}private: statesm_st;};  classObserver{public: virtual~Observer(){}; virtualvoidUpdate(Sub

4、jects*sub)=0; virtualvoidPrintInfo()=0;protected: Observer(){m_st='';}; statesm_st;};  classConAObserver:publicObserver{public: virtualSubjects*GetSubject() {returnm_sub;} ConAObserver(Subjects*sub) {  m_sub=sub;  m_sub->Attatch(this); } virtual~ConAObserver() {  m_sub->Detatch(this);  if(

5、!m_sub)deletem_sub; } voidUpdate(Subjects*sub) {  m_st=sub->GetState();  PrintInfo(); } voidPrintInfo() {  cout<<"AOPER"<GetState()<

6、_sub=sub;  m_sub->Attatch(this); } virtual~ConBObserver() {  m_sub->Detatch(this);  if(!m_sub)deletem_sub; } voidUpdate(Subjects*sub) {  m_st=sub->GetState();  PrintInfo(); } voidPrintInfo() {  cout<<"BOPER"<GetState()<

7、ewlist;}Subjects::~Subjects(){}voidSubjects::Attatch(Observer*obs){ m_obs->push_front(obs);}voidSubjects::Detatch(Observer*obs){ if(!obs)m_obs->remove(obs);}voidSubjects::Notify(){ list::iteratorit; it=m_obs->begin(); for(;it!=m_obs->end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。