データを 3 つの方法で表現できる「アイテム」があります。ランタイム コストで、ある表現から他の表現に変換できます。変換を行ったら、新しい表現を維持したいと思います。コアデータを「変更」することなく、データの表現を他の表現に変換できます。ランタイム コストがかかるため、データの 3 つの表現を含むクラスが必要です。いつでも、そのうちの 1 ~ 3 個が有効になります。
これの本当のポイントは、ユーザーが何かを要求できるアクセス方法もあるからです。この何かは、1 つ以上の表現から取得できます。たとえば、表現 1 から「範囲」を取得し、表現 2 または 3 から「ボリューム」を取得できます。
私の解決策は、メンバーデータとして3つの表現を持つクラスを作成することでした(そしてそれらが有効かどうかを知る方法)。次に、必要な表現を内部的に認識し、必要に応じて作成する getRange() メソッドを作成しました。これは正常に機能し、get メソッドを const にできないことを除いて、すべての問題を解決します。
したがって、このソリューションの実際の問題は、このクラスの「定数」インスタンスでさえ、内部的に他の表現を作成する可能性があるため、実際には const ではないことです。ただし、表現を変更してもコアデータは変更されないため、実際には「一定」です。
このクラスに役立つ C++ デザイン パターンはありますか? 助言がありますか?