Класс
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>);
};
Тем не менее, она все еще не кажется близкой к хорошему решению. Есть лучшие?