【理論】【轉】Android項目重構之路:實現篇

前兩篇文章Android項目重構之路:架構篇Android項目重構之路:界面篇已經講了個人項目開始搭建時的架構設計和界面設計,這篇就講講具體怎麼實現的,以實現最小化可用產品(MVP)的目標,用最簡單的方式來搭建架構和實現代碼。
IDE採用Android Studio,Demo實現的功能爲用戶註冊、登陸和展現一個券列表,數據採用咱們現有項目的測試數據,接口也是咱們項目中的測試接口。android

項目搭建

根據架構篇所講的,將項目分爲了四個層級:模型層、接口層、核心層、界面層。四個層級之間的關係以下圖所示:api

實現上,在Android Studio分爲了相應的四個模塊(Module):model、api、core、app
model爲模型層,api爲接口層,core爲核心層,app爲界面層。
model、api、core這三個模塊的類型爲library,app模塊的類型爲application。
四個模塊之間的依賴設置爲:model沒有任何依賴,接口層依賴了模型層,核心層依賴了模型層和接口層,界面層依賴了核心層和模型層。
項目搭建的步驟以下:架構

  1. 建立新項目,項目名稱爲KAndroid,包名爲com.keegan.kandroid。默認已建立了app模塊,查看下app模塊下的build.gradle,會看到第一行爲:app

    apply plugin: 'com.android.application'

    這行代表了app模塊是application類型的。post

  2. 分別新建模塊model、api、core,Module Type都選爲Android Library,在Add an activity to module頁面選擇Add No Activity,這三個模塊作爲庫使用,並不須要界面。建立完以後,查看相應模塊的build.gradle,會看到第一行爲:測試

    apply plugin: 'com.android.library'
  3. 創建模塊之間的依賴關係。有兩種方法能夠設置:
    第一種:經過右鍵模塊,而後Open Module Settings,選擇模塊的Dependencies,點擊左下方的加號,選擇Module dependency,最後選擇要依賴的模塊,下圖爲api模塊添加了model依賴;gradle

    第二種:直接在模塊的build.gradle設置。打開build.gradle,在最後的dependencies一項裏面添加新的一行:compile project(':ModuleName'),好比app模塊添加對model模塊和core模塊依賴以後的dependencies以下:ui

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'
        compile project(':model')
        compile project(':core')}

    經過上面兩種方式的任意一種,建立了模塊之間的依賴關係以後,每一個模塊的build.gradle的dependencies項的結果將會以下:
    model:spa

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'}

    api:架構設計

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'
        compile project(':model')}

    core:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'
        compile project(':model')
        compile project(':api')}

    app:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.0.0'
        compile project(':model')
        compile project(':core')}

建立業務對象模型

業務對象模型統一存放於model模塊,是對業務數據的封裝,大部分都是從接口傳過來的對象,所以,其屬性也與接口傳回的對象屬性相一致。在這個Demo裏,只有一個業務對象模型,封裝了券的基本信息,如下是該實體類的代碼:

/** * 券的業務模型類,封裝了券的基本信息。 * 券分爲了三種類型:現金券、抵扣券、折扣券。 * 現金券是擁有固定面值的券,有固定的售價; * 抵扣券是知足必定金額後能夠抵扣的券,好比滿100減10元; * 折扣券是能夠打折的券。 * * @version 1.0 建立時間:15/6/21 */public class CouponBO implements Serializable {
    private static final long serialVersionUID = -8022957276104379230L;
    private int id;                // 券id
    private String name;           // 券名稱
    private String introduce;      // 券簡介
    private int modelType;         // 券類型,1爲現金券,2爲抵扣券,3爲折扣券
    private double faceValue;      // 現金券的面值
    private double estimateAmount; // 現金券的售價
    private double debitAmount;    // 抵扣券的抵扣金額
    private double discount;       // 折扣券的折扣率(0-100)
    private double miniAmount;     // 抵扣券和折扣券的最小使用金額

    // TODO 全部屬性的getter和setter}

【文章太長,請參看原文:http://keeganlee.me/post/android/20150629】

相關文章
相關標籤/搜索