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

做网站的公司图图片外链

做网站的公司图,图片外链,企业模板之家,威海网站设计公司观察者模式 观察者模式的优缺点 优点 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 ,而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另…

观察者模式

在这里插入图片描述

观察者模式的优缺点

优点

  • 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 ,而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。
  • 观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另一边工作

缺点

  • 具体的观察类里面的update方法太单调了 现实是每个观察者的动作都可能都所不同

可以使用两种方式去解决此类问题
1:具体的观察者实现具体的 自己需要完成的任务 在继承抽象Observer后 在update内部直接调用具体的方式
2:具体的观察者将自己具体的动作也同时注册到 通知类里面 改变通知类里面的容器为map容器类 key为具体的观察者 value为具体的处理函数

代码

只实现基础部分
在这里插入图片描述

#include <iostream>  
#include <set>  
using namespace std;// 抽象观察者  
class Observer {
public:virtual void update(const string& subjectState) = 0;
};// 抽象主题  
class Subject {
public:virtual void Attach(Observer* observer) = 0;virtual void Detach(Observer* observer) = 0;virtual void Notify(const string& state) = 0;virtual string GetSubjectState() const = 0;virtual void SetSubjectState(const string& state) = 0;
};// 具体主题  
class ConcreteSubject : public Subject {
public:void Attach(Observer* observer) override {observers.insert(observer);}void Detach(Observer* observer) override {observers.erase(observer);}void Notify(const string& state) override {for (auto observer : observers) {observer->update(state);}}string GetSubjectState() const override {return subjectState;}void SetSubjectState(const string& state) override {subjectState = state;Notify(subjectState); // 当状态改变时,通知所有观察者  }private:set<Observer*> observers;string subjectState;
};// 具体观察者  
class ConcreteObserver : public Observer {
public:ConcreteObserver(const string& name, const string& initialState): name(name), observerState(initialState) {}void update(const string& subjectState) override {observerState = subjectState;cout << "观察者: " << name << " 的新状态是 " << observerState << endl;}private:string name;string observerState;
};int main() {ConcreteSubject* s = new ConcreteSubject();s->Attach(new ConcreteObserver("小明", "松懈"));s->Attach(new ConcreteObserver("蔡徐坤", "松懈"));// 改变主题状态,这将触发通知  s->SetSubjectState("警惕");return 0;
}
http://www.15wanjia.com/news/44285.html

相关文章:

  • 东莞网站开发哪家强手机seo百度点击软件
  • 网页设计软件appseo工具软件
  • 东莞 传媒 网站建设平台优化
  • 平面设计接单网站有哪些seo搜索引擎优化推荐
  • wordpress 网速优化推广方案
  • 好看的静态网站提高工作效率的重要性
  • 怎么直接用代码做网站深圳网站优化哪家好
  • 有没有免费找客户的软件简述网站内容如何优化
  • 建筑网格化seo网站的优化流程
  • 网站建设中文百营销软文的范文
  • 做虚拟币网站需要什么手续企业全网推广
  • 天津市武清区住房建设网站怎么制作个人网页
  • 免费房屋建设图纸网站有哪些软文营销的优势
  • 北京网站建设策划培训行业seo整站优化
  • 有了网站怎样做公众号罗湖区seo排名
  • 网站带后台模板百度关键词推广
  • 长沙网站优化掌营天下百度快速收录
  • 微网站建设使用程序莱芜seo
  • 拍卖网站建设需求sem是什么测试
  • 主页网站建设新型网络营销方式
  • 云虚拟主机可以做视频网站不品牌策划设计
  • 淮南市城乡建设委员会网站最近重大新闻头条
  • pt网站怎么下载与做大数据技术主要学什么
  • 做网站看百度脸色营销培训视频课程免费
  • 网站图片优化工具怎么建立网站平台
  • 深圳电商网络网站建设万词霸屏百度推广seo
  • 武汉市网站制作公司图片seo优化是什么意思
  • 海外网站推广优化专员网页制作代码
  • 网站开发需求范本安徽关键词seo
  • wordpress北欧控贵阳seo网站推广