类的命名约定和结构以存储用户

时间:2011-09-17 11:34:11

标签: c# class-design structure

我想创建一个包含Add(),Delete()等函数的类来将用户存储在数据库中。

那么,什么是更好的命名约定和结构?

在一个班级中都有:

**EXAMPLE**
User.Add("Username", "Password");
User user = User.GetUser();

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }

    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}

或分为两个类,并使用* Manager后缀...

**EXAMPLE**
UserManager.Add("", "");
User user = UserManager.GetUser();

class UserManager
{
    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }
}

或两者都不好,你有更好的例子吗?

2 个答案:

答案 0 :(得分:1)

其中名为“manager”的类通常指向一些不为人知的设计。

我会选择经典的Repository-patterndependency-injection

基本上是这样的:

  • 获取CRUD操作的界面
  • 为您需要它们而不是自己使用具体实现注入具体实现的实例

答案 1 :(得分:1)

我更喜欢第二种方式,对于没有逻辑和Manager类的简单实体,事实上MS Entity Framework或多或少相同,实体只有属性,生成的DBContext允许您查询,添加和编辑实体。 / p>

小注意:不要使UserManager的方法静态,类应该是带有实例方法的普通类,这样你就可以轻松测试并注入/如果需要。

小小的第二个注意事项:您不打算以明文形式检索用户密码或将其以明文形式存储在数据库中吗?!?! :d