必须设计一个基础设施来建立对等对象之间的通信。在这里,所有的经理都是同行,没有人互相认识。经理订阅事件和其他经理发布。经理没有其他经理的参考,他们只发布和订阅。Director 只创建那些经理。
有什么建议可以设计这样的基础设施,使经理能够将事件发送给其他人吗?
必须设计一个基础设施来建立对等对象之间的通信。在这里,所有的经理都是同行,没有人互相认识。经理订阅事件和其他经理发布。经理没有其他经理的参考,他们只发布和订阅。Director 只创建那些经理。
有什么建议可以设计这样的基础设施,使经理能够将事件发送给其他人吗?
Boost.Signals2 解决方案:
#include <boost/signals2/signal.hpp>
#include <boost/bind.hpp>
#include <iostream>
using namespace boost;
using namespace std;
class Manager{
public:
signals2::signal<void ()> *Msg;
void Foo() { cout << "Foo" << endl;}
};
class Director{
public:
Manager CreateManager() { return Manager();}
};
int main()
{
Director dir;
Manager m1 = dir.CreateManager();
Manager m2 = dir.CreateManager();
m1.Msg = new signals2::signal<void ()>();
m1.Msg->connect(bind(&Manager::Foo, &m2));
(*m1.Msg)();
}
http://www.oodesign.com/observer-pattern.htm
查看观察者模式。如果您在将其应用于您的问题时遇到问题,请告诉我,我将引导您走上正确的道路。