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

中国建设银行官网站大同微网站平台微网站建设方案模板

中国建设银行官网站大同,微网站平台微网站建设方案模板,食品包装设计方案,网络广告营销的定义定义 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 ——《设计模式》GoF 使用场景 一个对象(目标对象)的状态发生改变,所有的依赖对…

定义

定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
——《设计模式》GoF

使用场景

一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。

结构

在这里插入图片描述

代码示例

//Observer.h
/****************************************************/
#ifndef OBSERVER_H
#define OBSERVER_H
#include<iostream>
#include<list> 
using namespace std;class Observer {
public://构造Observer(){ }//析构virtual ~Observer(){ }//更新virtual void updata(){ }
};class Server {
private://观察者链表list<Observer*> m_Observer;protected://服务器状态string m_Status;public://构造函数Server(){ }//析构函数virtual ~Server(){ }//添加观察者void Attach(Observer* observer) {this->m_Observer.push_back(observer);}//移除观察者void Remove(Observer* observer) {this->m_Observer.remove(observer);}//设置服务器状态virtual void SetStatus(string s){ }//获取服务器状态virtual string GetStatus() {return this->m_Status;}//通知观察者void Notify() {for (list<Observer*>::iterator iter = this->m_Observer.begin();iter != m_Observer.end(); iter++) {(*iter)->updata();}}
};//具体服务器
class Concrete_Server : public Server {
private://用户名称string m_Name;
public://构造Concrete_Server(string name) {this->m_Name = name;}//析构~Concrete_Server(){ }//设置服务器状态virtual void SetStatus(string s) { this->m_Status = "("+this->m_Name+")"+s;}//获取服务器状态virtual string GetStatus() {return this->m_Status;}
};//具体观察者
class Concrete_Observer : public Observer {
private://观察者名称string m_Name;//需要观察的服务器Server* m_Server;
public://构造Concrete_Observer(string name, Server* server) {this->m_Name = name;this->m_Server = server;}//析构~Concrete_Observer(){ }//更新virtual void updata() {cout << this->m_Name << ": " << this->m_Server->GetStatus() << endl;}
};#endif
//test.cpp
/****************************************************/
#include <iostream>
#include <string>
#include "Observer.h"int main()
{Server* server1 = new Concrete_Server("服务器1");Observer* observer1 = new Concrete_Observer("观察者1", server1);Observer* observer2 = new Concrete_Observer("观察者2", server1);server1->Attach(observer1);server1->Attach(observer2);server1->SetStatus("2.1.0.001更新系统");server1->Notify();delete server1;server1 = NULL;delete observer1;observer1 = NULL;return 0;
}

运行结果:
在这里插入图片描述

要点总结

  • 使用面向对象的抽象,Observer模式使得我们可以独立地改变目标与观察者,从而使二者之间的依赖关系达致松耦合。
  • 目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。
  • 观察者自己决定是否需要订阅通知,目标对象对此一无所知。
  • Observer模式是基于事件的UI框架中非常常用的设计模式,也是MVC模式的一个重要组成部分。
http://www.yayakq.cn/news/93435/

相关文章:

  • 网站建设论文百度云盘海南最近三天的新闻大事
  • 如何用python做网站中国建设银行东莞市网站
  • 响应式网站 乐云seo品牌开店做网站
  • vps 上传网站怎样做金融理财网站
  • 快站公众号工具网站建站是什么
  • 西安找建网站公司泉州网站建设托管
  • 如何给自家网站做关键词优化网站开发合同 保密条款
  • 郑州网站建设q.479185700強连云港市住房和城乡建设局网站
  • 在服务器上布网站怎么做政务内网网站群建设
  • 网站界面设计尺寸规范做网站得叫什么
  • 做美工的网站建筑人才网招聘网官网首页
  • 哪些网站是做数据分析的100种禁用的视频软件短视频
  • aaaa景区网站建设标准给网站做路由
  • 有哪些外贸网站网站建设项目规划书社团宣传
  • 一品在线视频观看seo排名诊断
  • 怎么使用创客贴网站做图做国外衣服的网站有哪些
  • 手机可以建立网站吗做电缆好的网站
  • 怎么自己建网站wordpress换头像
  • 织梦cms发布侵权网站清单网站群的建设
  • 建设淘宝优惠券网站网架有限公司
  • 建设计公司网站要多少钱企业网站带后台模板
  • 做违法网站会怎么样昆明小程序开发报价
  • 网站功能设计的内容网站建设中网站需求分析报告作用
  • 网站500网站怎么做数据备份
  • 找人做seo要给网站程序淘宝网站建设好评
  • 设计工作室 网站做电影网站赚钱知乎
  • 会展网站的建设情况建设营销型网站制作
  • 个人备案网站盈利北京工商注册查询系统官网
  • 长沙多用户商城网站建设诸城网站建设公司
  • 深圳网站设计招聘网网架公司需要给设计院提交的资料