我的班级通过其公共方法Controller
操纵一些。Object
这就是问题所在: canObject
请求的某些更改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>);
};
但是,它似乎仍然不是一个很好的解决方案。还有更好的吗?