2009-01-27 26 views
0

我正在用C++编写客户端/服务器应用程序,需要实现简单的协议才能正确发送和接收数据。我有一个服务器协议类,可以将消息转换为我的格式,然后再从此格式转换它。
,什么是服务器端的协议看起来像:什么OOP设计决策适合客户端/服务器应用程序中协议的情况?

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); 
}; 

现在我不能决定什么会是更好的决定,使实现对客户端应用程序协议。服务器协议的朋友类?或者可能需要从服务器协议中提取子类,然后客户端协议将从此类派生?

回答

3

我会创建一个独立于客户端和服务器的协议类。他们可以分别调用该类的功能,而不是从类继承。

这遵循favoring composition over inheritance的原则。此外,客户端和服务器都不是“协议解释器”。相反,他们每个人只需要使用该协议。

0

您确定您需要针对服务器和客户端的不同实施?

在协议所在的级别,它看起来应该被设计成对于服务器和客户端都是相同的。

在更高级别(您发送的消息的类型)客户端和服务器应该有所不同。

相关问题