代码拉取完成,页面将自动刷新
同步操作将从 四月是你的谎言/深入应用C++11:代码优化与工程级应用 的实践代码 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通道并被自动更新
#include <vector>
class Subject;
class Observer
{
public:
virtual void update(Subject* obj, int value) = 0;
};
class Subject {
int m_value;
std::vector<Observer*> m_views;
public:
void attach(Observer * obs)
{
m_views.push_back(obs);
}
void set_value(int value)
{
m_value = value;
notify();
}
void notify()
{
for(int i = 0; i < m_views.size(); ++i)
{
m_views[i]->update(this, m_value);
}
}
};
//这是一种经典的观察者模式的实现,但这种实现不够通用,只能对特定的观察者有效,即必须是observer抽象类的派生类才行,并且这个观察者类还不能带参数,虽然能在抽象类中定义带几个指定参数的观察者方法,但不够通用。
//因为,在实际情况下参数个数是不定的。这样的实现,最主要的两个限定:1. 需要继承,继承是强对象关系,不够灵活。2. 观察者被通知的接口参数不支持变化,导致观察者不能应付接口的变化
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。