私はモデルビューアーキテクチャを持っています。モデルオブジェクトからビューオブジェクトを作成したいと思います。 ここに基本的な例があります。あなたはすべてのためのインタフェースを必要とするファクトリオブジェクトの型を指定する方法
class ModelA
{
ModelA(int a);
}
class ModelB : public ModelA
{
ModelB(int a,int b);
}
class ViewModelA
{
ViewModelA(ModelA* ma);
}
class ViewModelB : public ViewModelA
{
ViewModelB(ModelB* mb);
}
class ViewFactory
{
ModelA * createFromModel(ModelA *ma)
{
// Now what is the best way to store type ???
// Used an integer and overload a static method getType()
// Or use an enum?
switch(ma.type)
{
}
}
}
int main(int argc, char *argv[])
{
ModelA *ma = new ModelA(10);
ModelA *mb = new ModelB(10,11);
ViewFactory myFactory;
ViewModelA *va = myFactory.createFromModel(ma);
ViewModelB *vb = myFactory.createFromModel(mb);
//va should be a model of ViewModelA and vb a model of ViewModelB
}
理由だけではなく、保存されたタイプとswitch文よりも、ここでの多型を使わないのでしょうか?あなたの 'createFromModel'関数は' ModelA'ポインタ上のメンバ関数を呼び出すだけで、適切な関数は多態的に選択されます。 –