拥有仅使用静态方法的模型是否有意义?

时间:2010-05-28 12:02:19

标签: architecture asp.net-mvc-2

我有一个我正在研究的ASP.NET MVC 2项目,我想知道我应该在哪里放置一些代码。

我目前有一个UsersModel,它由一堆针对我的数据上下文操作的静态方法组成。

这些方法包括:UserExistsInDatabaseUserIsRegisteredForActivityGetUserIdFromFacebookId等等。

这些方法应该在UsersModel类中,还是更适合模型上下文之外的用户帮助类?

欢呼任何指针。

4 个答案:

答案 0 :(得分:5)

不要使用静态方法。在存储库中抽象它们:

public interface IUsersRepository
{
    bool UserExistsInDatabase(User user);
    bool UserIsRegisteredForActivity(User user);
    ...
}

然后针对某些数据存储实现:

public class UsersRepository : IUsersRepository
{
    ...
}

最后为您的控制器提供此存储库的一个实例,以便它可以与用户一起使用:

public class HomeController : Controller
{
    private readonly IUsersRepository _repository;
    public HomeController(IUsersRepository repository)
    {
        // the repository is injected into the controller by the DI framework
        _repository = repository;
    }

    // ... some action methods that will use the repository
}

答案 1 :(得分:1)

我认为我们应该避免使用静态方法,因为它会在模拟中出现问题。这些方法更适合UserRespository / UserService类。

答案 2 :(得分:0)

听起来像具有属性/功能的“用户”类:
* ExistsInDatabase,
* IsRegisteredForActivity,
* GetIdFromFacebookId

答案 3 :(得分:0)

其中任何一个选项都可以。或者,您可以将它们定义为扩展方法,并将它们直接附加到用户类。

HTH。