我有两个程序:服务器和客户端
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::readPacket
获取 a时packet
,它应该能够将信息发送到GUI
. 但是,情况并非总是如此,因此传递点/参考并不是我想要的。
它没有很好地说明,但想法是: -Protocol::readPacket
寻找我们是否需要调用GUI
- 协议不应该接受另一个参数,也不应该被实例化。
有人给了我关于使用观察者模式的建议。Protocol
将是主题和GUI
观察者。但是,如果没有实例化协议,我就无法做到。
那么有没有办法在没有实例化协议的情况下做到这一点?