您的位置:首页 > 其它

我对多类型用户的设计想法......

2005-01-12 19:03 204 查看
[b]序言

[/b]最近在做一个项目,从客户恰谈,需求分析,系统设计,编码,全包了,头一回这样,

郁闷啊,离交货都没有几天了,还有些思路上理不清,所以把我想法贴出来,任凭各位bloger拍砖

需求

这里只写出和本次有关的部分,就是用户处理的部分,按需求要求,系统将会有五种用户类型,这里列出三种有代表性的描述如下:

1,教师用户(Teacher) : 注册的时候可以以独立的身份注册为教师,也可以选择从属与某个学校(School)

2,学校用户(SchoolUser) :注册的时候将产生两部门,一个用户,一个是学校,用户就作为这个学校的管理员而存在,学校信息可以被教师用

户选择

3,专家用户(Expert):不能直接注册,必须在后台由管理员添加

设计

下面按照实体,数据层,数据操作层,web层分别写出我的思路

 1,实体层设计

 实体层包括用户接口和其他的相关的对象,为了代码书写的方便,用字段

而不用属性了

 public abstract IUser

 {

    public string Username ;

    public string Password ;

 }

 public class Teacher : IUser

 {

    public int SchoolID ;

 }

 public class Expert : IUser

 {

    //没有新的属性了

 }

 public class SchoolUser : IUser

 {

    public School MySchool ;

 }

 public class School

 {

    public string SchoolName ;

    public int AreaID ;

 }

 各个实体的关系如下UML图(第一次画UML,不知道大家能不能看懂),图里是用接口,代码用了abstract类代替,意思一样了



 

2,数据层

 针对每个对象分别写CRUD方法,这里就不写出来了

 3,数据操作层

 以注册用户方法例:

 public class Users

 {

     public static void Register(IUser user , UserType userType) //UserType为用户类型枚举

     {

          //这里写判断逻辑,这里也是我觉得最不好地方

          switch(userType)

          {

              //在这里分别调用数据层相应的方法完成各种类型的用户的注册任务

          }

     }

 }

 4,web层调用

 以注册学校用户为例

 School school = new School()

 //省略对school初始化的代码,下同

 SchoolUser user = new SchoolUser() ;

 ....

 user.School = school ;

 Users.Register(user , UserType.SchoolUser) ;

 

开始拍砖了......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: