zoukankan      html  css  js  c++  java
  • 我对多类型用户的设计想法......

    序言
    最近在做一个项目,从客户恰谈,需求分析,系统设计,编码,全包了,头一回这样,
    郁闷啊,离交货都没有几天了,还有些思路上理不清,所以把我想法贴出来,任凭各位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) ;
     
    开始拍砖了......

  • 相关阅读:
    linux 查看僵尸进程
    apache 修改最大连接数
    ng压缩后,形参被简化问题解决:
    $rootScope 与 $scope 区别:$rootScope对象是“单例的”——一个模块中只有一个$rootScope;
    vue+webpack在“双十一”导购产品的技术实践
    过滤指令:number currency lowercase(转为小写)/uppercase(转为大写)
    ng-show ng-disabled ng-show ng-hide 值的布尔值改变时,状态发生变化
    二,数据双向绑定
    一、angular:module-Controller-Model-View (模块-控制器-模型-视图);异步请求$http
    5、面向对象
  • 原文地址:https://www.cnblogs.com/kwklover/p/90816.html
Copyright © 2011-2022 走看看