私は、一般的な概念を説明するクラスと、その概念の分散を説明するサブクラスを持っている傾向があります。たとえば、Polygon
<|-{、、Rectangle
などTriangle
}。
ただし、これらの階層のさまざまな表現があることに気付くことがよくあります。たとえば、グラフィック表現(QPolygonなど)や物理表現(mass、centerOfMass)などを別の表現とは別にしたいと思います。
私の場合、純粋なデータオブジェクトの階層(Command
<|-{ WaitCommand
、UnknownCommand
など})があり、各データクラス(WaitCommandPanel
、UnknownCommandPanel
)に一致するGUI表現があります。
私の問題は、データ表現を作成したら、データからGUIに飛躍する必要があることです。
データオブジェクトのリストを前提として、対応するGUI要素を作成できるようにしたいのですが、2つの表現を分離したままにしておきます。
[お粗末な]解決策の1つは、それぞれがGUI表現を返すCommand
機能(つまり)を持つことです。Command::getPanel()
私のデータクラスには表現コードが含まれているので、これは好きではありません。
もう1つの解決策(当面は採用しました)は、ルックアップを実行することです。つまり、GUIを開始するときに、Command
sのリスト(一般化)が与えられると、関数はその特殊なタイプに基づいて作成するオブジェクトを決定します。私もこれが好きではありません。
助言がありますか?