我正在用 C++ 编写客户端/服务器应用程序,需要实现简单的协议(protocol)才能正确发送和接收数据。我有一个服务器协议(protocol)类,它可以将消息转换为我的格式,然后再从这种格式转换。
什么是服务器端协议(protocol):
class BaseProtocol {
protected:
int NumberOfBytesInPackOfText;
std::string serviceString;
public:
BaseProtocol(int SizeOfTextPack, const char* extraString):
NumberOfBytesInPackOfText(SizeOfTextPack),
serviceString(extraString) {}
virtual std::string& convertToSystemMessage(const char* message)=0;
virtual std::string& convertToNativeMessage(const char* message)=0;
virtual ~BaseProtocol() {
NumberOfBytesInPackOfText = 0;
serviceString = "";
}
};
class SimpleProtocol: public BaseProtocol {
public:
SimpleProtocol(int SizeOfTextPack, const char* service):
BaseProtocol(SizeOfTextPack, service) {}
std::string& convertToSystemMessage(const char* nativeMessage);
std::string& convertToNativeMessage(const char* systemMessage);
};
现在我无法决定在客户端应用程序上实现该协议(protocol)的最佳决定。服务器协议(protocol)的友元类?或者我可能需要从服务器协议(protocol)中提取子类,然后客户端协议(protocol)将从此类派生?
最佳答案
我会创建一个独立于客户端和服务器的协议(protocol)类。他们每个人都可以调用该类的函数,而不是从该类继承。
这遵循favoring composition over inheritance的原则.此外,客户端和服务器都不是“协议(protocol)解释器”。相反,他们每个人都只需要使用该协议(protocol)。
关于c++ - 什么样的 OOP 设计决策适合客户端/服务器应用程序中的协议(protocol)情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/484882/