范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

设计模式14观察者模式

  观察者模式
  定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
  这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
  什么时候使用观察者模式
  当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式。
  观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。
  观察者模式的不足
  如果其他人事先写好的类,如何再去实现 Observer 的Update 接口呢?
  观察者模式示例代码 #include #include #include using namespace std;  class BaseObserver { public:     string state;     string m_name;     virtual void Update(const string& n, const string& st) = 0; };  class BaseSubject { public:     vector observers;     string subState;     string m_name;     virtual void Attach(BaseObserver*) = 0;     virtual void Detach(BaseObserver*) = 0;     virtual void Notify() = 0; };  class SubjectA : public BaseSubject { public:     SubjectA(const string& name) {         m_name = name;     };      virtual void Attach(BaseObserver* ob) override {         observers.push_back(ob);     }      virtual void Detach(BaseObserver* ob) override {         for (auto iter = observers.begin(); iter != observers.end();) {             if (*iter == ob) {                 iter = observers.erase(iter);             }             else {                 ++iter;             }         }     }      virtual void Notify() override {         for (auto p : observers) {             p->Update(m_name, subState);         }     } };  class Observer : public BaseObserver { public:     Observer(const string& name) {         m_name = name;     };     virtual void Update(const string& n, const string& st) override {         state = st;         cout << "selfNmae: " << m_name             << " state: " << state             << " event name: " << n             << endl;     } };  int main(int argc, char const* argv[]) {     Observer ob1("ob1");     Observer ob2("ob2");     SubjectA sub("subjectA");      sub.Attach(&ob1);     sub.Attach(&ob2);     sub.Detach(&ob1);     sub.subState = "状态改变了";     sub.Notify();     return 0; }
  公众号:   cpp_yang
  个人微信:   yangxg_cxy
  今日头条:   程序员杨小哥
  B站:   https://space.bilibili.com/473029051
  知乎:   https://www.zhihu.com/people/cpp_yang

资讯北汽蓝谷迎来拐点?公司注册资本增幅超22至42。87亿元文懂车帝原创彩丽美懂车帝原创行业日前,据天眼查显示,北汽蓝谷新能源科技股份有限公司于近日发生工商变更,注册资本由约34。94亿人民币增至约42。87亿人民币,增幅超22。资料显示,课本学的外国资本家压榨剥夺工人来获得资本,现在还有意义吗?当然,现在也是一样剥削。且更狠。要知道天下乌鸦一般黑。有意义。意义如下。1让你明白资本家企业为国家交的税大多是由工人创造的。工人给资本家打工就是给国家做贡献。2资本家是资本主义社会媲美苹果三星影像旗舰!Reno6Pro拍照好不好,一比就知道说起OPPOReno6Pro,想必大家印象都十分深刻,毕竟该机不仅外观轻薄好看,更在游戏和影像方面有着不小的提升。尤其是在影像方面,OPPOReno6Pro更是搭载了旗舰级的IMX嘴唇动作解锁手机?华为申请唇动特征解锁方式引热议目前我们使用的不管是电脑还是手机,解锁方式不外乎指纹解锁虹膜解锁人脸识别解锁这几项,其中虹膜解锁由于成本贵和识别难度问题迟迟无法大面积推广,而人脸识别解锁目前最安全最快的也就只有苹华为公开利用唇动特征解锁设备专利,具有抗抄袭性侨报网综合讯继指纹人脸解锁手机之后又多了唇语解锁?近日,华为公开利用唇动特征解锁设备专利这一话题冲上微博热搜。图为位于北京市联想桥附近的一家电器商店内相邻的华为与荣耀的手机销售专区向iPhone学习,小米11高温后强制降频?MIUI负责人遵守国家规定天气越来越热,不仅人受不了,手机也受不了。这不,最近关于小米手机被迫降频的消息上了热搜。不少小米11用户都收到了降温通知,更新后的固件增加了对于部分场景的温度限制。根据某些已经升级百度输入法再更新,领先的AI技术应用,掀起一场人机体验革命初识百度输入法如果大家对百度是停留是一家搜索引擎公司,你可能了解百度的一小部分,百度起家是做搜索引擎,大家经常上网查询资料,第一个使用最多的要数百度搜索功能,百度现在是一家非常强大我国能源新突破?跨时代意义钠电池将面世,或解决电动汽车缺陷?近期,要说在科技界最大的呼声是什么?那必然是钠电池取代锂电池,用惯锂电池的我们或许一时之间搞不明白,钠电池有什么过人之处吗?为何它的呼声会这么高?它能将锂电池取而代之吗?究竟在未来读华中农业大学有前途吗?随着我国城乡一体化建设建成的加快,美丽乡村建设战略目标的不断推进,特色小镇,文化小镇如雨后春笋,遍布在实现中华民族伟大梦想的春风里,对农业科技创新人才的需要供不应求,并且高烧不退,Win11来了!电脑上也能装安卓手机App苹果去年已实现手机电脑应用进入全面协同时代上周,微软正式发布新一代视窗操作系统Windows11。与上一代系统相比,win11最大的亮点是实现了手机和电脑的进一步协同,让用户感到最方便的无疑是win11系统上可以安装安卓A迎来芯时代!为什么说WiFi6和电视更配?就在上上个月,苹果迎来了他的春季发布会,推出了全新的iMac和搭载了M1芯片的iPad,这一下子就让芯片这一核心技术成为了所有厂家重点关注的对象。我们说,更强的芯片带来了更快的运算
亚世光电董秘显示器件作为人工智能交互入口,在5G技术ARVR裸眼3D等领域前景广阔亚世光电(002952)04月19日在投资者关系平台上答复了投资者关心的问题。投资者请问贵司目前订单状况如何?亚世光电董秘尊敬的投资者,您好!公司目前生产状况良好,订单充足。感谢您在智能穿戴领域大显身手探访山西尊特年产1000万台智能终端项目近日,位于阳泉高新区智能制造产业园的山西尊特智能科技有限公司组装车间里,200多名工人在各自岗位忙碌,装主板装喇叭试音争取在规定时间里,向客商交付蓝牙音箱的订单。3月25日上午,省微信或许迎来付费,网友纷纷担忧,其实不大可能现如今各种社交软件充斥着我们的生活,这些社交软件拉近了我们沟通的距离,让我们能够更加高效的沟通,极大的便利了我们的生活。社交软件众多,其中以微信QQ为龙头,不少人都是只使用这两个软瑞幸单方面取消低价订单,网友假bug,真营销!律师已属违约4月18日早间8点左右,饿了么外卖平台的瑞幸咖啡大部分产品一杯仅售6元上下,更有网友晒出1分钱就买到的截图,有不少消费者因低价大量下单薅羊毛。上午9点,瑞幸发布道歉声明称,低价订单余承东突然的人间清醒问界M5年销30万台,确实吹牛了众所周知,华为消费者业务CEO智能汽车BUCEO余承东的大嘴本色业界有名,最知名的莫过于那句(华为)3年内超越苹果,五年内超越三星,做到全球手机销量第一名。而自华为开启智能汽车业务华为调研了82位离职博士,终于知道人才流失根源华为对82名离职博士员工115名在职博士员工进行了一对一的深度访谈调研和数据分析,大量呈现了离职博士员工的心声及对平庸中层主管的胜任问题讨论,总结出博士群体大量流失的4大原因,对企性能屏幕续航影像手感一个不落!真香机OPPOK10系列来了对于OPPOK9系列,相信大家都不会陌生,在去年OPPOK9系列继承了K系列一直以来的硬核表现,以亲民价格配合高配置,成为了很多消费者换机的首选。甚至其中的OPPOK9Pro,还拿Tomcat连接配置tomcat91500连接Connectorport8006connectionTimeout60000redirectPort8443maxPostSize1maxHttpHeaspringboot整合Hutool实现Convert类型转换实用案例值得收藏青锋每日分享每天分享技术实战干货,技术在于积累和收藏,我们不一定比别人厉害多少,但我们懂得收藏和积累。万一有一天用到了呢!关注博主,每天带你学习一点点。青锋开源产品地址httpsgSpringBoot学习SpringBoot是为了简化Spring应用的创建运行调试部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。简单来说,它提供了一堆依赖打包,埃隆马斯克和他的电动飞机虽然特斯拉已经确立了自己在科技界的主导地位,但埃隆马斯克,从未停止为所有科技爱好者创造新技术,我们期待特斯拉航空公司的出现。大约一年前,埃隆马斯克表示,有一天所有交通工具都将是电动