C++常见设计模式——观察者模式

本文探讨了设计模式中的观察者模式,它建立了一种一对一到多的依赖关系,当被观察对象状态变化时,所有依赖的观察者都会自动更新。被观察者维护观察者列表,并在变化时通知所有观察者。观察者可以注册和注销,适用于对象状态更新需多对象同步且数量可变的场景。
摘要由CSDN通过智能技术生成

设计模式是对设计原则的具体化。用江湖话说就是武林秘籍,总结出来的一些固定套路,可以帮助有根基的程序员迅速打通任督二脉,从此做什么都特别快。常用的模式及其场景如下

C++常见设计模式——观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都要得到通知并自动更新。

观察者模式从根本上讲必须包含两个角色:观察者和被观察对象。

被观察对象自身应该包含一个容器来存放观察者对象,当被观察者自身发生改变时通知容器内所有的观察者对象自动更新。

观察者对象可以注册到被观察者的中,完成注册后可以检测被观察者的变化,接收被观察者的通知。当然观察者也可以被注销掉,停止对被观察者的监控。

应用场景如下:

a、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。

b、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。

/*
* 关键代码:在目标类中增加一个ArrayList来存放观察者们。
*/
#include <iostream>
#include <list>
#include <memory>using namespace std;class View;//被观察者抽象类   数据模型
class DataModel
{
   
public:
    virtual ~DataModel(){
   }
    virtual void addView(View* view) = 0;
    virtual void removeView(View* view) = 0;
    virtual void notify() = 0;   //通知函数
};//观察者抽象类   视图
class View
{
   
public:
    virtual ~View(){
    cout << "~View()" << endl; }
    virtual void update() = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值