我的一位同事建议在我们的ASP.NET MVC解决方案中使用工厂类创建视图模型对象。其想法是,它可以帮助我们的应用程序中构建视图模型的方式设计和可维护性。
我想找出是否有人对此有经验。我进行了一些研究,但在这种实践上发现得很少。
当前,我们在控制器级别创建viewmodel对象,例如
public ActionResult Index()
{
return this.View(this.BuildIndexViewModel());
}
因此this.BuildIndexViewModel()负责创建viewmodel类(显然是:)。但是我们正在研究以下可能性:
public ActionResult Index()
{
return this.View(ViewModelFactory.CreateIndexViewModel());
}
这是一个有趣的想法,但我不是100%相信。我对其他人对此的看法感兴趣。
4
我很难看到诚实的好处。您将使用工厂来隐藏对象的构造,但是在这种情况下为什么要这么做?
—
CodeART 2012年
您的BuildIndexViewModel方法已经是工厂方法,该方法可能是控制器专用的。将其提取到不同的工厂类的唯一原因是在另一个控制器中重用它。
—
MattDavey 2012年
你们俩在这方面都和我有相同的想法,所以很高兴我并不孤单:) @MattDavey我可以坦白地说,我非常怀疑视图模型是否将用于一个以上的控制器,这使得工厂想法多余。当主题再次出现时,我将与您分享。
—
杰森·埃文斯
就我个人而言,我更希望viewmodel类型是构造自身过程的专家。专门知识应该放在其他地方的唯一时间是,如果构造需要其他应用程序领域(例如存储库)的知识,那么在这种情况下,您可能希望中间人将视图模型保持
—
沉默
@MattDavey:您能将这两条评论包装成我可以投票赞成的答案吗?
—
pdr 2012年