1、1,从一个聊天程序的设计开始,2,一个什么样的程序需求,支持用户注册功能 支持用户登录校验 支持好友管理 支持点对点聊天 支持离线消息 实现管理员对用户的基本管理功能,3,如何入手?,方法一:先设计数据,包括持久化数据(数据将被存储于外存中)和非持久化数据(数据仅在内存和网络中存在)。 方法二:从宏观上架构程序,即定义系统应包含的程序,以及这些程序应包含的功能以及程序之间的关系,4,如何架构?,服务器,客户端1,客户端n,DB,用户管理程序,5,持久化数据设计,用户数据 好友数据 离线消息,6,持久化数据设计,用户数据 好友数据 离线消息,7,持久化数据设计,用户数据 好友数据 离线消息,8,
2、实现用户管理功能,采用MVC架构,界 面,业 务 逻 辑 层,D A O 层,Model,DB,9,用户管理具体实现,Model:TbUser 表达数据 DAO:TbUserDAO 数据和sql转换 Control:UserManager 一般不写sql View:UserManagerUI 数据输入输出,10,“异常”体系的架构,三类自定义异常 SystemException:一般用于表达系统部署没有成功的一些问题,如驱动程序加载失败 DBOperatorException:用于表达数据库操作异常,如SQL语句错误等 BusinessException:用于表达业务异常,如密码错误、用户不能
3、删除等;,11,“异常”的处理层次,DAO层所有方法仅抛出SystemException、DBOperatorException Control层所有方法可抛出SystemException、DBOperatorException和BusinessException View层将“异常”通过某种方式展示给用户,12,一般开发步骤,设计Model 架构空DAO类 架构空Control类 绘制View,设计事件监听器 从view出发逐个实现系统功能 编写view代码 建立并编写control方法 建立并编写dao方法,13,管理员登录模块的实现,如何架构MVC? 何时调用登录模块?如何调用?,14
4、,我们还需要什么?,如何实现注册功能? 客户发送一个用户信息(Model)到服务器 服务器通过Control进行用户注册 返回结果给服务器 在MVC架构下如何实现? View在客户端 Control在服务器端 Model两边都有 实现客户和服务器的通信即可,15,我们还需要什么,从MVC的角度 如何实现注册功能? 如何实现登录? 如何实现好友管理? 如何实现点对点通信? 如何实现离线消息?,16,类MVC架构,界 面,客户 业务 逻辑 层,D A O 层,Model,DB,网 络 通 信 层,服务 器业 务逻 辑层,17,该架构下如何实现注册功能?,Model:TbUser(公用) view:
5、TbUserEditor(客户端) Control:NetworkCommand(客户端)UserManager(服务器端) DAO: TbUserDAO(服务器端) 如何架构服务器接收客户消息并反馈的类?在该架构下可认为是服务器端的View,因为其负责输入输出功能,18,该架构下如何实现登录验证?,同上,19,该架构下如何实现好友管理?,同上,20,该架构下如何实现离线消息?,同上,21,该架构下如何实现点对点通信?,不涉及数据库,无DAO 涉及两个View(发送端和接收端),如何设计? 分解为两个过程 发送端编辑消息,并将消息通过NetworkCommand发送到接收端,接收端缓存消息 接收端定时从缓存中提取消息,并将消息显示,