1

对象对等体

必须设计一个基础设施来建立对等对象之间的通信。在这里,所有的经理都是同行,没有人互相认识。经理订阅事件和其他经理发布。经理没有其他经理的参考,他们只发布和订阅。Director 只创建那些经理。

有什么建议可以设计这样的基础设施,使经理能够将事件发送给其他人吗?

4

2 回答 2

0

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)();
}
于 2013-09-19T15:56:25.830 回答
0

http://www.oodesign.com/observer-pattern.htm

查看观察者模式。如果您在将其应用于您的问题时遇到问题,请告诉我,我将引导您走上正确的道路。

于 2013-09-19T15:40:21.067 回答