Как объект может ожидать разные запросы в зависимости от его состояния? - PullRequest
1 голос
/ 24 апреля 2020
Класс

My Controller манипулирует некоторыми Object с помощью своих методов publi c. Вот проблема: некоторые Object изменения, запрошенные Controller, могут нуждаться в некотором уточнении перед выполнением любых дальнейших манипуляций. Как это можно решить чисто? Вот прямая реализация, чтобы сделать проблему более понятной:

class Object {
 public:
  std::optional<Clarification_request> process_request(Parameter);
  // USE THIS ONLY IF process_request() RETURNED A CLARIFICATION REQUEST:
  void clarify_previous(Clarification);
};

Есть ли более чистое дизайнерское решение? Вот моя идея (которую вы, возможно, не должны читать, прежде чем придумать свою, если хотите):

class Object {
 public:
  std::variant<Usual_request, Clarification_request> get_awaited_request() const;
  void process_request(std::variant<Parameter, Clarification>);
};

Тем не менее, она все еще не кажется близкой к хорошему решению. Есть лучшие?

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