我对多类型用户的设计想法......
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) ;
开始拍砖了......
[/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) ;
开始拍砖了......
相关文章推荐
- 关于stat函数和根据st_mode 的值获取目标文件的文件类型和用户权限,及对相关系统宏的一点想法
- 强类型设计实践
- 可扩展架构之用户规模影响设计
- 如何通过代码向 User 类型的字段里面添加 多个用户
- 嵌入式系统用户接口设计之裸机界面开发(三)
- 从用户行为打造活动交互设计闭环——2014年世界杯竞猜活动设计总结
- 瞬间之美:Web 界面设计如何让用户心动
- 牛逼的Android UI--第18章 与用户交互相关的设计模式 (下1)
- java用户角色权限设计
- Int类型的集合类的设计实现
- 如何以用户增长为目的来设计产品?
- C++临时变量的另类应用:基于iostream的类型安全的log接口设计
- 模拟用户行为高匿爬虫的设计开发
- 数据结构课程设计 表达式类型的实现
- 设计用户系统
- c#中索引器实验案例及相关算法和类型设计的思考
- 设计模式---结构类型---组合
- 分享一个检测用户使用的移动设备类型的php class
- 用户登录 日志表 设计