当前位置: 首页 > news >正文

深圳 网站建设 公司清水模板

深圳 网站建设 公司,清水模板,前端培训机构,中山网站建设公司目录 观察者模式步骤例子:订阅博主UML图1:定义观察者接口2:定义被观察者接口3:创建具体观察者类4:创建具体被观察者类5:使用执行结果 观察者模式 观察者模式允许我们定义一种订阅机制,可在对象…

目录

    • 观察者模式
    • 步骤
    • 例子:订阅博主
      • UML图
      • 1:定义观察者接口
      • 2:定义被观察者接口
      • 3:创建具体观察者类
      • 4:创建具体被观察者类
      • 5:使用
      • 执行结果

观察者模式

观察者模式允许我们定义一种订阅机制,可在对象事件发生时通知所有的观察者对象,使它们能够自动更新。观察者模式还有另外一个名字叫做“发布-订阅”模式。

步骤

1:定义观察者接口
2:定义被观察者接口
3:创建具体观察者类
4:创建具体被观察者类
5:使用

例子:订阅博主

UML图

Inheritance
Inheritance
Composition
1
*
Association
1
1
Blogger
- list attach_list
+void attach(Observer* ob)
+void detach(Observer* ob)
+void notify(string msg)
Observer
- string m_name
- Blogger* m_blog
+Observer(string name, Blogger* blog)
+void unsubscribe()
+void update(string msg)
Zhanyun
+void notify(string msg)
Subscriber
+Subscriber(string name, Blogger* blog)
+void update(string msg)

1:定义观察者接口

// 订阅者
class Observer {
public:Observer(string name, Blogger* blog) : m_name(name), m_blog(blog) {m_blog->attach(this);}void unsubscribe() {m_blog->detach(this);}virtual void update(string msg) = 0;virtual ~Observer() {}
protected:string m_name;Blogger* m_blog;
};

2:定义被观察者接口

// 博主
class Blogger {
public:void attach(Observer* ob) {attach_list.push_back(ob);}void detach(Observer* ob) {attach_list.remove(ob);}virtual void notify(string msg) = 0;virtual ~Blogger() {}
protected:// 订阅者列表list<Observer*> attach_list;
};

3:创建具体观察者类

class Subscriber : public Observer {
public:using Observer::Observer;void update(string msg) override {cout << m_name << " 收到博客更新: " << msg << endl;}
};

4:创建具体被观察者类

// 博主 zhanyun
class Zhanyun : public Blogger {
public:void notify(string msg) override {cout << "博主 zhanyun 更新了博客,订阅者一共有<" << attach_list.size() << ">人" << endl;for (const auto& item : attach_list) {item->update(msg);}}
};

5:使用

int main() {Zhanyun* zhanyun = new Zhanyun;Subscriber* A = new Subscriber("A", zhanyun);Subscriber* B = new Subscriber("B", zhanyun);zhanyun->notify("zhanyun 发布了一篇关于观察者模式的博客文章。");delete A;delete B;delete zhanyun;return 0;
}

执行结果

博主 zhanyun 更新了博客,订阅者一共有<2>人
A 收到博客更新: zhanyun 发布了一篇关于观察者模式的博客文章。
B 收到博客更新: zhanyun 发布了一篇关于观察者模式的博客文章。

http://www.yayakq.cn/news/481185/

相关文章:

  • 开封府景点网站及移动端建设情况如何查询公司的详细信息
  • wordpress网站建设教程专业做网站路桥
  • 用dw制作网站模板部门网站建设目的
  • 国外做giveaway的网站做临时工看哪个网站
  • 专门做h网页游戏的网站上海网站设计团队
  • 静海区网站建设推广网站建设提成
  • 深圳网站 制作信科便宜阜宁专业做网站的公司
  • ppt效果网站国家信息企业公示网官网登录入口
  • 在ps中做网站首页的尺寸太原自助建站系统
  • 山丹做网站的公司佛山微网站价格
  • 常州网站建设哪儿好薇有哪些免费做网站
  • 旅游网站的建设的意义最新国际新闻10条
  • 网站开发环境和运行环境广告公司名字大全创意
  • 公司网站怎么做才能有官网二字网站如何改首页模块
  • 协同办公oa搜索引擎关键词快速优化
  • 网站备案 名称 不一致吗试析媒体网站品牌建设
  • 做网站图片要求wordpress找回密碼
  • 企业的建站方式详情页设计详细教程
  • 茶叶网站建设策划方案 u001f智慧团建重置密码验证码
  • 网站流量查询平台网站建设哪里培训
  • 韩国flash网站在线平台
  • 网站建设评审表企业宣传类网站建设
  • 手机版网站制作模板app软件开发公司推荐
  • 毕业设计做网站 答辩会问什么问题临沂做百度网站软件公司
  • 唐山网站建设500元网站自然排名
  • 兰州网站建设王道下拉強网络营销推广方法研究
  • 网站建设业务拓展校园推广活动
  • 网站建设 计入哪个科目网站的音乐链接怎么做
  • 网站建设论文答辩自述素材网站怎么推广
  • 网站建设网页制作江西网站开发公司