数据服务层设计稿

数据层服务是整个App的基础,App的所有页面和功能都是基于数据服务进行构建的。

数据服务是开发中的第一步,非常重要,关于数据服务的设计方法,之前已经讲解过,这里只重点强调两种情况:

  • 同步数据操作
  • 异步数据操作

数据操作过程由数据服务对象Manager进行封装,对于操作过程,有同步和异步的区别。除内存操作为,其余所有操作都为异步操作。例如:

  • Storage
  • Fetch
  • SQLite
  • 文件I/O

封装同步数据操作时,数据操作结果通过方法返回值进行返回。

封装异步数据操作时,数据操作结果通过事件回调函数携带的参数进行返回。

1,设计元数据

元数据是App中基础业务数据,不可再分割。一个App根据业务需要,可能需要多个元数据支撑。

更具业务分析,此App需要4种元数据:

  • UserInfo
  • Room
  • CheckItem
  • CheckResult

UserInfo

{
    uid:'xxxxxx',
    token:'xxxxxx',
}

字段说明

字段名 作用 备注
uid 用户唯一ID 通过登录请求获取
token 用户权限令牌 通过登录请求获取

Room

{
    roomID:1,
    roomName:'101',
    roomType:0,
    roomTypeName:'宿舍',
    buildingID:1,
    buildingName:'1号楼',
    className:'16移动应用开发',
    teacherName:'小李',
}

字段说明:

字段名 作用 备注
roomID 房间主键ID 房间唯一标识,自增
roomName 房间名
roomType 房间类型ID 0为宿舍,1为教室
roomTypeName 房间类型名称
buildingID 房间所属建筑物ID
buildingName 房间所属建筑物名称
className 房间所属班级
teacherName 房间所属辅导员

CheckItem

{
    checkID:1,
    checkName:'地面卫生',
    roomType:0,
    sectionID:0,
    sectionName:'常规检查项',
    checkResult:true,
}

字段说明:

字段名 作用 备注
checkID 检查项ID 唯一
checkName 检查项名称
roomType 检查项所属房间类型
sectionID 检查项类别ID 0为常规检查项,1为安全检查项
sectionName 检查项类别名
checkResult 检查结果 true为合格,false为不合格

CheckResult

{
    id:1,
    room:room,
    checkItems:[
        checkItem,
        ...
    ],
    result:true,
    date:'时间字符串,格式为YYYY-MM-DD',
    submit:false,
}

字段说明:

字段名 作用 备注
id 数据唯一标识 数据库主键自增
room 房间元数据对象
checkItems 检查结果数据组,数组中每个元素为检查项元数据
result 房间检查结果 已经检查规则对检查项进行计算,得出检查结果
date 检查时间
submit 检查结果是否上传服务器 true为未上传,false为已上传

2,设计数据服务对象

数据服务对象的作用是对元数据的相关操作进行封装。依照元数据的设计,我们设计4个数据服务对象

  • UserManager
  • RoomManager
  • CheckItemManager
  • CheckResultManager

在设计数据服务对象时,要从以下两个方面进行考虑

  • 需要为上层容器组件提供哪些数据
  • 需要为上层容器组件提供哪些功能
  • 在上传组件调用数据服务对象是有哪些数据交互

我们首先强调一个原则,各个数据服务对象直接是互不知晓的。如果遇到一个数据服务对象需要使用另一个数据服务对象中的数据的情况,我们需要将数据保存在系统级服务中:stroage或sqlite中。

UserManager

//登录功能
login(user,loginResultCallBack);

参数说明:
user,登录所需的数据,为一个对象
{
    username:'用户输入的用户名',
    pwd:'用户输入的密码'
}

loginResultCallBack,登录完成事件回调函数。
(result,message)=>void
result:登录结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。

RoomManager

//更新本地Room数据
updateRoom(resultCallBack);

参数说明:
resultCallBack,为更新结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//获取房间所有类型
getRoomTypes(callBack);

参数说明:
callBack为查询结果回调函数,类型为(roomTypes,message)=>void
roomTypes,查询结果数组,数组中每个元素为roomType对象
{
    roomTypeID:0,
    roomTypeName:'xxx',
}
当查询失败时,roomTypes值为null
message为失败原因
//通过房间类型,获取该类型下的所有建筑物
getBuildings(roomTypeID,callBack);

参数说明:
roomTypeID:房间类型ID

callBack为查询结果回调函数,类型为(buildings,message)=>void
buildings,查询结果数组,数组中每个元素为roomType对象
{
    buildingName:'xxx',
}
当查询失败时,buildings值为null
message为失败原因
//通过房间类型和建筑物ID获取所有房间
getRooms(roomTypeID,buildingName,callBack);

callBack为查询结果回调函数,类型为(rooms,message)=>void
rooms,查询结果数组,数组中每个元素为rooms对象
当查询失败时,rooms值为null
message为失败原因

CheckItemManager

//更新本地CheckItem数据
updateCheckItem(resultCallBack);

参数说明:
resultCallBack,为更新结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//通过房间对象,获取相应的检查项
getCheckItems(room,callBack);

参数说明
room:room元数据对象

callBack:为查询结果回调函数,类型为(checkItems,message)=>void
checkItems,查询结果数组,数组中每个元素为checkItems对象
当查询失败时,checkItems值为null
message为失败原因

CheckResultManager

//添加检查结果
addCheckResult(checkResult,resultCallBack);

参数说明
checkResult:检查结果元数据

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//保存修改后的检查结果
saveCheckResult(checkResult,resultCallBack);

参数说明
checkResult:检查结果元数据

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//删除检查结果
deleteCheckResult(checkResultIDs,resultCallBack);

参数说明
checkResultIDs:检查结果ID数组

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//根据roomType获取相应检查结果
getCheckResults(roomType,resultCallBack);

参数说明
roomType:房间类型ID

resultCallBack,为操作结果回调函数
(checkResults,message)=>void
checkResults:当前类型下的检查结果数组,数组中每一个元素为checkResult元数据对象
message:失败原因,当成功时,值为空。
//提交检查结果到服务器
postCheckResults(checkResultIDs,resultCallBack);

参数说明
checkResultIDs:检查结果ID数组

resultCallBack,为操作结果回调函数
(result,message)=>void
result:更新结果,true为成功,false为失败。
message:失败原因,当成功时,值为空。
//添加监听者,监听数据变化事件
addListener(callBack);

参数说明
callBack,为操作结果回调函数,当数据发送变化时会调用
(void)=>void

results matching ""

    No results matching ""