2009-01-27 25 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

您確定您需要針對服務器和客戶端的不同實施?

在協議所在的級別,它看起來應該被設計成對於服務器和客戶端都是相同的。

在更高級別(您發送的消息的類型)客戶端和服務器應該有所不同。

相關問題