一个系统设计的例子:
3DM客户端系统设计
一、系统设计
1.1、整体架构
3DM客户端系统按照逻辑划分,主要分为四层,基础类库层,数据层,业务逻辑层,UI展示层。每个层次由不同的模块组成(图1)。
(图1)
1.1.1、基础类库层
(简写)
功能说明:
包含的内容: 网络请求, JSON数据的解析
1.1.1.1、网络请求
选型:
网络请求采用Apache HttpClient 进行网络请求的支持。
对于使用Volley类库的方式,就可以定义多种Request来完成Volley方式的请求。
采用HttpClient可以更加灵活的定义各种网络接口请求,同时Android系统本身就包含HttpClient的实现。
1.1.1.2、JSON解析
选型:JSON解析需要针对服务器返回的数据格式进行处理,只要能够将JSON解析成为对象,并且能够更新到UI界面即可。经过分析,接口返回的数据无法适应FastJSON/GSON的常用解析方式,
因此最终确定 JSON 解析采用 org.json来进行。
1.1.2、数据层
1.1.2.1、数据实体定义
文字说明和类图,实际的字段参考03-服务器接口文档
每个实体要根据应用的内容来选择相应的字段。
1.1.2.2、数据库表设计
1.1.2.3、数据实体解析方式
1.1.3、业务逻辑层
1.1.3.1、服务器接口
1.1.3.2、请求任务的设计
1.1.4、UI展示层
1.1.4.1、UI整体框架
根据个人的分析与设计,来进行。
不推荐使用 TabActivity了。
1.1.4.2、顶部Banner的设计
循环显示几张图片,每一个点击之后,访问相应的内容。
滑动下面的列表,Banner跟着移动到上面去。
如果采用ListView + Header View的话,onItemClick 如果处理position变化。
1.1.4.3、UI性能的支持
Fragment的 onCreate, onCreateView, onResume 这三个方法对于数据加载的影响
需要进行优化。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我自己的一些记录:个人理解
项目第一步:
1: 工具类,网络,支撑
这里的支撑,可以想象为例如greenDao的generator阿
例如ximalaya的项目:
现在我们先将第三方框架导入。这个其实是底层需要做的。(这个是第一步)
网络框架-》retrofit,retrofit2:convert-gson:2.0.0-beta3
图片加载-》fresco,fresco.0.9.0
数据库框架-》greendao,de.greenrobot:greendao:2.1.0
recyclerView-》com.android.support:recyclerview-v7:23.1.0
design->com.android.support:design:23.1.0
导入的时候可能需要它下载:
下载后的路劲是类似于:C:\Users\XUE\.gradle\caches\modules-2\files-2.1\com.facebook.fresco\fresco\0.9.0
因为数据库使用了greendao,所以数据库需要代码生成的。
新建一个model,选择Java Library,名字和classname 可以默认
Library name->lib
Java class name-> MyClass
然后路劲是在lib 下面的src-----》example下面的
----------------
注意了,如果是因为在同步的时候添加了东西,但是没有出来效果,例如刚才我在同步时的时候添加了model,但是在项目上面按F4的时候没有看到lib这个model,
这个时候只要点开右边的gradle菜单,点击上面的刷新按钮就好了。
----------------
点击项目,按F4,点击左边列表的lib,然后添加dependency,(这个也属于第一步)
选择de.greenrobot:greendao-generator:2.1.0
因为greendao 需要通过这个generator来生成DAO的文件。(是DAO文件吗?还是什么文件?)
项目第二步:
项目第三步:
adapter等 例如考虑到databiding的多布局的adapter,