如何在系统中设计两种类型的帐户

时间:2011-06-12 06:08:18

标签: c# .net oop user-management

我正在尝试为学生和教师创建一个社交网络应用程序。 我目前正在设计用户帐户模块

我已经想到了这两种方法

方法1

Public class Account
{
    public string AccountId{get;set;}
    public string AccountName{get;set;}
       .
       .
       .


}

public class Student : Account
{
    public Course[] Courses {get; set;}
    //other student properties
        .
        .
        .

}

public class Teacher : Account
{
     //other teacher properties

}

方法2

Public class Account
{
    public string AccountId{get;set;}
    public string AccountName{get;set;}
    public AccountType AccountType {get;set;}  //AccontType is enum having student and teacher
       .
       .
       .


}


public class User
{
    public string UserId { get;set;}
    public string UserName {get;set;}
    public Account Account {get;set;}
}


public class Student : User
{
    public Course[] Courses {get; set;}
    //other student properties
        .
        .
        .

}


public class Teacher : User
{
     //other teacher properties

}

有没有比这些方法更好的方法?

2 个答案:

答案 0 :(得分:2)

在我看来,方法2更清晰,更受欢迎。

归结为User 有帐户User帐户吗?对我而言,前者在这种情况下应该使用组合而不是继承,就像在方法2中那样。

答案 1 :(得分:1)

我更喜欢方法2,因为它更贴近现实世界的情景。学生和教师用户,并且每个都拥有帐户,并且具有所需的属性集。