【发布时间】:2017-03-01 15:16:36
【问题描述】:
我有两个程序:一个服务器和一个客户端
class client
{
private:
Network net;
Gui gui;
};
这是网络类
class Network
{
public:
void receivePacket(packet)
{
Protocol::readPacket(packet)
}
};
这是 Gui 类
class Gui
{
private:
std::string informations;
public:
void displayInfo();
void updateInformation(information);
};
这里是协议
class Protocol
{
static void readPacket(packet)
{
if (packet.command == "refreshGui")
//I need somehow to call GUI::UpdateInformation here and give the information from packet.information
}
};
Protocol 被认为是一个“静态类”,这意味着它不应该被实例化。所以想法是,当Protocol::readPacket 从服务器获得packet 时,它应该能够将信息发送到GUI。但是,情况并非总是如此,因此传递点/参考并不是我想要的。
没有很好地说明,但想法是:
- Protocol::readPacket 寻找如果我们需要打电话给GUI
- 协议不应该有另一个参数,也不应该被实例化。
有人给了我关于使用观察者模式的建议。 Protocol 是主题,GUI 是观察者。但是,如果没有实例化协议,我就无法做到。
那么有没有办法在不实例化协议的情况下做到这一点?
【问题讨论】:
-
什么是
Protocol? -
@i_am_jorf 我更新了话题。
标签: c++ multithreading observer-pattern static-class