J'écris une application client/serveur en C++ et j'ai besoin de réaliser un protocole simple pour envoyer et recevoir des données correctement. J'ai une classe pour le protocole de serveur qui peut convertir le message à mon format et puis le convertir encore de ce format.
que ce qui est le protocole côté serveur ressemble à:Quelle décision de conception OOP convient à la situation de protocole dans l'application client/serveur?
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);
};
Maintenant, je ne peux pas décider ce qui sera la meilleure décision à prendre pour mettre en œuvre ce protocole sur l'application client. Une classe d'amis au protocole de serveur? Ou peut-être ai-je besoin d'extraire la sous-classe du protocole serveur, puis le protocole client sera dérivé de cette classe?