c++观察者模式收集
来源:互联网 发布:多目标粒子群算法代码 编辑:程序博客网 时间:2024/06/06 17:55
观察者模式
//// Created by caozw on 17-9-27.//#ifndef _OBSERVER_H_#define _OBSERVER_H_#include <string>#include <list>#include <algorithm>#include <string>#include <iostream>//观察者class Observer{public: Observer() {} virtual ~Observer() {} virtual void Update() {}};//通知者class CISubject{public: CISubject() {} virtual ~CISubject() {} void Attach(Observer *observer) { m_observers.push_back(observer); } //添加观察者 void Remove(Observer *observer) { m_observers.remove(observer); } //移除观察者 void Notify() //通知观察者 { std::list<Observer*>::iterator iter = m_observers.begin(); for(; iter != m_observers.end(); iter++) (*iter)->Update(); } virtual void SetStatus(std::string s) { m_status = s; } //设置状态 virtual std::string GetStatus() { return m_status; } //获得状态private: std::list<Observer* > m_observers; //观察者链表protected: std::string m_status; //状态};//具体通知者class BlogCSDN : public CISubject{private: std::string m_name; //博主名称public: BlogCSDN(std::string name): m_name(name) {} ~BlogCSDN() {} void SetStatus(std::string s) { m_status = "CSDN通知 : " + m_name + s; } //具体设置状态信息 std::string GetStatus() { return m_status; }};//具体观察者class ObserverBlog : public Observer{private: std::string m_name; //观察者名称 CISubject *m_blog; //观察的博客,当然以链表形式更好,就可以观察多个博客public: ObserverBlog(std::string name, CISubject *blog): m_name(name), m_blog(blog) {} ~ObserverBlog() {} void Update() //获得更新状态 { std::string status = m_blog->GetStatus(); std::cout<<m_name<<"-------"<<status<< std::endl; }};#endif
实际使用例子:
#include <iostream>#include "observer.h"using namespace std;int main(){ CISubject *blog = new BlogCSDN("wuzhekai1985"); Observer *observer1 = new ObserverBlog("tutupig", blog); blog->Attach(observer1); blog->SetStatus("发表设计模式C++实现(15)——观察者模式"); blog->Notify(); delete blog; delete observer1; return 0;}
阅读全文
0 0
- c++观察者模式收集
- 【C++】Chapter10:观察者模式
- Objective C--观察者模式
- Objective C 观察者模式
- 观察者模式(C++)
- Objective C--观察者模式
- c版本观察者模式
- 【C++】观察者模式
- 观察者模式(C++)
- Object-c 观察者模式
- C++:观察者模式
- 观察者模式(C++)
- 【C#】观察者模式案例
- C语言的观察者模式
- 【C#】事件与观察者模式
- 设计模式--观察者模式(C++)
- 设计模式--观察者模式(C++)
- 学习设计模式--观察者模式(C++)
- Windows配置caffe
- Spring MVC源码分析—Servlet解析
- 第一与第二次作业
- what is Agile development ?
- 架构师和程序员的区别
- c++观察者模式收集
- java.lang.Object.clone()解读
- 文件上传漏洞技术基础
- Android—eclipse配置安卓开发环境
- 变量、作用域和内存问题
- CVPR2017文章汇总
- Programming Collective Intelligence-Making Recommendations
- 学习写出美观的代码
- Spring中的MethodInvokingFactoryBean使用