私Controller
のクラスはObject
、パブリック メソッドを介して一部を操作します。ここに問題があります。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>);
};
ただし、まだ優れたソリューションにはほど遠いようです。もっと良いものはありますか?