私の同僚は、ASP.NET MVCソリューションでビューモデルオブジェクトを作成するためにファクトリクラスを使用することを提案しました。これは、ビューモデルをアプリで構築する方法の設計と保守性に役立つという考えです。
他の誰かがこれを経験したことがあるかどうかを知りたかった。私はいくつかの研究を行いましたが、この実践についてはほとんど見つかりませんでした。
現在、コントローラレベルでビューモデルオブジェクトを作成しています。
public ActionResult Index()
{
return this.View(this.BuildIndexViewModel());
}
したがって、this.BuildIndexViewModel()は、viewmodelクラス(明らかに:)の作成を担当します。ただし、以下の可能性について検討しています。
public ActionResult Index()
{
return this.View(ViewModelFactory.CreateIndexViewModel());
}
これは興味深いアイデアですが、100%確信しているわけではありません。これについて他の人の意見に興味がありました。
この場合、私が従うべき最良のガイダンスは [〜#〜] grasp [〜#〜] 原則であると言います。特に、オブジェクト作成の割り当てに関する4つの基準を見てください。
一般に、クラスBは、次の1つ、できればそれ以上が当てはまる場合、クラスAのインスタンスを作成する責任があります
コントローラークラス(B)はそのリストのアイテム#3と#4(およびビューモデルがPOSTされた場合は#2)に一致するため、ビューモデル(A)の構築動作を実行するための非常に賢明な場所です。私が見ているように、その建設行動を専門家クラスに抽出させざるを得ない理由は2つだけです。
GRASPの4つのオブジェクト作成基準を振り返ると、そのリストで追加のティックが得られた場合にのみ、別のファクトリーに動作を抽出します。そうでなければ、そうすることに価値はありません。
お役に立てば幸いです。