1. 程式人生 > >2.1 專案的整體架構,專案搭建,也叫做 系統設計

2.1 專案的整體架構,專案搭建,也叫做 系統設計

一個系統設計的例子:

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.2JSON解析

選型: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.4UI展示層

1.1.4.1UI整體框架

根據個人的分析與設計,來進行。

不推薦使用 TabActivity了。

1.1.4.2、頂部Banner的設計

迴圈顯示幾張圖片,每一個點選之後,訪問相應的內容。

滑動下面的列表,Banner跟著移動到上面去。

如果採用ListView + Header View的話,onItemClick 如果處理position變化。

1.1.4.3UI效能的支援

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檔案嗎?還是什麼檔案?)

專案第二步:

資料結構,解析


這個還需要


例如 需要湧動啊什麼entity,例如,使用的是list還是map之類的。
例如ximalaya,我們就需要用到的資料結構是:




那麼現在需要那些實體類呢:
發現的實體類:
熱點圖的實體類
推薦資訊的實體類。
專輯實體類
音訊實體類。
-------------------------
資料庫裡面的實體類一共是5個,
AlbumEntity.java
DiscoverEntity.java
FocusImageEntity.java
RecommendEntity.java
TrackEntity.java
----------
HomeEntity裡面的包含了:




+++++++++++++++++++++++++++++++++++++++++++++
注意了,例項的名字一定要和json裡面的名字一樣,不一樣就不會獲取了。
private DiscoveryColumns  discoveryColumns;
        private RecommendEntity editorRecommendAlbums;
        private HotRecommendEntity hotRecommends;
        private FocusImages focusImages;
        private BulletArea bulletArea;
+++++++++++++++++++++++++++++++++++++++++++++

專案第三步:

adapter等 例如考慮到databiding的多佈局的adapter,