寻找静态助手类的替代品

时间:2014-09-04 00:47:29

标签: c# asp.net-mvc static static-libraries static-methods

我有一个MVC ASP.NET项目,我目前使用一个静态ViewModelHelper类,它有几个方法(每个视图模型1个),它接收某些参数和模型对象并生成视图模型对象,让我返回到我的我的控制器的视图。它们目前都是静态的,整个类是无状态的,我只是在想要实例化视图模型的实例时使用它,因为有些数据需要相当复杂的逻辑。

这些方法作为View Model类中的构造函数会更好吗?我的理解是最好不要在View Models中有任何逻辑,但我可能是错的。或者是否有一个我应该在这里使用的设计模式来帮助我创建这些View模型?

2 个答案:

答案 0 :(得分:1)

这是一个关于项目架构和设计的问题,您的ViewModel应该是什么样子以及它们应该在何处/如何初始化。现在看来你的ViewModel是DTO,你用工厂方法初始化它们。这很好,但我建议实际上接受抽象工厂模式,并确保工厂实现不会因无关责任而过载。这是“实用程序”类的继承问题,应该让每个开发人员都保持警惕。

另一方面,视图相关的初始化逻辑,例如,填充选择列表,很可能位于ViewModels本身。在这种情况下,你应该警惕重复。

另一种可能的方法是使用构建器模式。

如果您只使用它而不是混合搭配,那么无论哪种方式都可以是一个干净的解决方案。当然,只要你保持清洁。 ;)

在没有看到相当复杂的逻辑的情况下,我建议你先检查一下为什么初始化逻辑是复杂的。如果真的必须如此。也许有些商业逻辑在那里偷偷摸摸?

答案 1 :(得分:0)

您的ViewModel应该只是DTO,只有属性的类。没有逻辑。将逻辑放在其他类(服务或完整的业务逻辑,依赖)中,并让它们填充ViewModel。

我知道这个答案相对于实质性的设计考虑而言似乎很短,但这是它的核心。有关推理等,请查看一些演示它的完整的ASP.NET MVC解决方案,如https://prodinner.codeplex.com/