データとGUIを分けたほうがいいと聞きました。たとえば、私はいくつかのデータを持っています。これは階層的であり、次のような具象型の抽象ベースと派生クラスがあります。
class Data {};
class ConcreteDataA : public Data {};
class ConcreteDataB : public Data {};
また、階層GUI(ダイアログなど)もあります
class DataDialog {};
class ConcreteDataADialog : public DataDialog {};
class ConcreteDataBDilaog : public DataDialog {};
そして、データオブジェクトからデータダイアログオブジェクトを作成したいと思います。データオブジェクトがConcreteDataAの場合、ConcreteDataADialogが作成され、B、Bの場合、ダイアログが作成されます。次のようなクラスDataに仮想関数を追加することで、これを行う簡単な方法があります。
virtual DataDialog* CreateDialog()
しかし、この関数をデータクラスに追加するとします。データ/GUI分離の原則に違反しているようです。2番目の方法は、グローバルなCreateDialog関数を作成し、dynamic_castタイプのデータオブジェクトに従ってダイアログを作成することです。この方法は、多くのmaualifにも適していません。それを実装する他の方法はありますか?または実際には、最初の方法も大丈夫ですか?どうもありがとう!
友達の一人がリフレクションを使うように言った。これでうまくいくと思います。