какой шаблон дизайна использовать, чтобы получить желаемую функциональность - PullRequest
0 голосов
/ 02 октября 2019

Я хочу создать чистый виртуальный класс, который наследуют другие классы, и каждый класс реализует одну и ту же функцию, но с разной реализацией: скажем, я реализую класс Server

class Server
{
   Server();
   ~Server()=0;
   virtual void send(const std::string& string);
   virtual std::string receive();
};

class TcpServer:public Server
{
   TcpServer();
   ~TcpServer();
   void send(const std::string& string)
   {...}
   std::string receive(){...}
};

class UdpServer : public Server
{
    UdpServer ();
    ~UdpServer ();
    void send(const std::string& string)
    {...}
    std::string receive(){...}
};



main()
{
    Server* server = new TcpServer()/UdpServer;
}

Как называется этот шаблон проектирования? потому что я не понимаю, является ли это Адаптер или Композит или Фасад, и если у вас есть другое представление о том, как реализовать это поведение.

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Шаблон стратегии должен быть реализован для этого варианта использования. Проверьте ссылку ниже для получения дополнительной информации.

https://en.m.wikipedia.org/wiki/Strategy_pattern

0 голосов
/ 02 октября 2019

Я бы больше склонялся к заводскому образцу:

https://en.m.wikipedia.org/wiki/Factory_method_pattern

Поскольку вы переходите на TCP / UDP, вы также можете проверить схему реактора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...