本文是對我在知乎乙個回答的整理,其中的內容大多是對我平時的閱讀和實踐的總結,希望對android的開發者有所幫助。但畢竟是個人的一些思考,難免有疏漏,也歡迎對本文的內容提出建議。
1. 架構設計的目的
2. 基於mvp的架構設計思路
2.1 什麼是mvp?
2.2 mvp架構存在的問題
模型層(model)中的整體**量是最大的,一般由大量的package組成,針對這部分需要做的就是在程式設計的過程中,做好模組的劃分,進行介面隔離,在內部進行分層。
強化presenter的作用,將所有邏輯操作都放在presenter內也容易造成presenter內的**量過大,對於這點,我的方法是在ui層和presenter之間設定中介者mediator,將例如資料校驗、組裝在內的輕量級邏輯操作放在mediator中;在presenter和model之間使用**proxy;通過上述兩者分擔一部分presenter的邏輯操作,但整體框架的控制權還是在presenter手中。mediator和proxy不是必須的,只在presenter負擔過大時才建議使用。最終的架構如下圖所示:
3 基於aop的框架設計
aop(aspect-oriented programming, 面向切面程式設計),誕生於上個世紀90年代,是對oop(object-oriented programming, 物件導向程式設計)的補充和完善。oop引入封裝、繼承和多型性等概念來建立一種物件層次結構,用以模擬公共行為的乙個集合。當我們需要為分散的物件引入公共行為的時候,oop則顯得無能為力。也就是說,oop允許你定義從上到下的關係,但並不適合定義從左到右的關係。例如日誌功能。日誌**往往水平地散布在所有物件層次中,而與它所散布到的物件的核心功能毫無關係。對於其他型別的**,如安全性、異常處理和透明的持續性也是如此。這種散布在各處的無關的**被稱為橫切(cross-cutting)**,在oop設計中,它導致了大量**的重複,而不利於各個模組的重用。而aop技術則恰恰相反,它利用一種稱為「橫切」的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到乙個可重用模組,並將其名為「aspect」,即方面。所謂「方面」,簡單地說,就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可操作性和可維護性。
3.1 aop在android中的使用
4 總結
5 快速開發框架
5.1 afinal
afinal是乙個android的ioc,orm框架,內建了四大模組功能:finalacitivity, finalbitmap, finaldb, finalhttp。通過finalactivity,可以通過註解的方式進行繫結ui和事件。通過finalbitmap,可以方便的載入bitmap,而無需考慮oom等問題。通過finaldb模組,通過一行**就可以對android的sqlite資料庫進行增刪改查。通過finalhttp模組,可以以ajax形式請求http資料。
5.2 xutils
xutils目前主要包括4大模組:dbutils, viewutils, httputils, bitmaputils。包含了很多實用的android工具;支援大檔案上傳,更全面的http請求協議支援,擁有更加靈活的orm,更多的事件註解支援且不受混淆影響;最低相容android 2.2 (api level 8)。
5.3 thinkandroid
參考目錄: aop技術基礎
從三層架構到mvc, mvp
mvc, mvp以及model2
gof等。
Android App整體架構
本文是對我在知乎乙個回答的整理,其中的內容大多是對我平時的閱讀和實踐的總結,希望對android的開發者有所幫助。但畢竟是個人的一些思考,難免有疏漏,也歡迎對本文的內容提出建議。模型層 model 中的整體 量是最大的,一般由大量的package組成,針對這部分需要做的就是在程式設計的過程中,做好模...
xxl job簡介 整體架構設計
xxl job簡介 整體架構設計 xxl job是乙個分布式任務排程平台,其核心設計目標是開發迅速 學習簡單 輕量級 易擴充套件。xxl job 是乙個輕量級分布式任務排程框架,它的核心設計理念是把任務排程分為兩個核心部分 排程中心 xxl admin 和執行器。隔離成兩個部分。這是一種中心化的設計...
SAP系統環境整體架構設計總結
sap 系統環境整體架構設計總結 no.table name short description memo 典型的架構圖 資料庫伺服器 主要用於存放資料庫,如果為了保障,還可以採用雙機熱備等架構,具體可以參看資料庫架構方面的資料。屬於資料儲存伺服器。sapecc伺服器 也就是傳統的 sapr3 er...