我有两个程序:服务器和客户端
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
从服务器获得packet
时,它应该能够将信息发送到GUI
。然而,情况并非总是如此,所以传递一个点/参考并不是我想要的。
没有很好地说明但是这个想法是:
- Protocol::readPacket
寻求我们是否需要致电GUI
- 协议不应该采取另一种论点,不应该实例化。
有人给了我关于使用Observer-pattern的建议。 Protocol
将是主题,GUI
是观察者。但是,如果没有实例化协议,我就无法做到这一点。
有没有办法在没有实例化协议的情况下做到这一点?
答案 0 :(得分:0)
在分布式计算中,节点的网络管理器接收消息并调用与消息类型相关联的调度程序是一种常见模式。你的需求非常相似。这是你可以做的: