App 組件化/模塊化之路——Repository 模式
什麼是 Repository 模式
Repository 這個詞直譯過來倉庫、倉儲的意思。這個意思其實也能反應出 Repository 模式作用。App 開發中少不了對數據的操作,數據的來源可能有很多種:網路、資料庫、文件以及內存中的緩存。而 Repository 就相當於一個倉庫管理員,管理這些數據的存儲。當業務層想要獲取或者存儲數據時,只需要通過 Repository 的管理員進行操作。這樣的好處就是:屏蔽數據來源的操作介面。對於業務層來說不必關心數據存在哪裡,以及如何存儲的。而且也符合我們組件化/模塊化架構設計的思想。即當我們更換數據存儲設備時,例如從 Android 系統 Sqlite 數據轉換為第三方的資料庫時,不會影響到業務邏輯。
設計模式
首先預覽一下 Repository 模式的設計類圖(歡迎拍磚)
IDataSource 是定義了數據來源介面,是根據具體的業務需要定義。一般來說,有增、刪、改、查這幾個方法。LocalRepository封裝的是本地存儲方式,實現 IDataSource介面。RemoteRepository封裝的是網路存儲方式,實現 IDataSource 介面。其中 LocalRepository 與 RemoteRepository 就是代表著各種存儲方式的具體實現。而 RepositoryFactory就是傳說中的「倉庫管理員」,管理著各種存儲方式,它也是業務層與數據層交互的橋樑。
Show me the code
假設目前有個業務是獲取遠程數據的需求,如果本地有緩存數據則從本地獲取,否則從網路中獲取。這樣的業務邏輯很常見,我們用 Repository
模式進行封裝。
首先預覽代碼總體結構
IDataSource
LocalRepository
RemoteRepository
RepositoryFactory
使用示例
這裡是直接使用了 RxJava2 進行調用,因為 Repository 是對數據的請求和訪問,這個是耗時操作,故需要放在後台線程中進行。在實際的項目中一般都會使用 MVP 來封裝這一層。
文章來自博客園
IT精品課程:http://xue.ujiuye.com/
「勤工儉學計劃」,給你一個真正0元學習IT技術的機會!
http://www.ujiuye.com/zt/qgjx/?wt.bd=fq37300j
找工作太難?不是你不行,我們來幫你!
http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300j
※SignalR在ASP.NET MVC中的應用
※處理移動端自適應布局的方法-calc()與vw
※你絕對未曾想過的淘寶神奇貨架
※百所高校巡迴講座之南京分校
※基於cordova開發的基本事項和常用總結
TAG:IT優就業 |
※容器化分散式日誌組件ExceptionLess的Angular前端UI
※Kubernetes組件
※最全面跨組件數據Apache Atlas實現跨組件沿襲Apache Hadoop
※組件、Prop和State
※Spring核心——Stereotype組件與Bean掃描
※基於 node.js 的自動路由組件-HttpPostman
※學習es7的Decorator(順帶寫個react高階組件)
※React Native 彈出框組件
※一個製作Web圖案的組件css-doodle
※iFixit拆解華為Mate 20 Pro:內部組件多模組化
※Facebook開源Linux內核組件和工具:BPF、Btrfs、Netconsd、Cgroup2、PSI、Oomd
※Windows系統的JScript組件被曝存在一個0day RCE
※Nintendo Labo 推出全新 Switch VR 組件
※Mozilla Firefox 將很快獲得包含 Tor 模式的擴展組件
※疑似 Apple iPhone X Plus 玻璃屏幕組件泄露
※高可用負載均衡:開源PaaS Rainbond組件Rainbond-Entrance揭秘
※Facebook構建高性能Android視頻組件實踐之路
※TE Connectivity推出124位Sliver連接器和電纜組件
※OpenStack 基礎介紹03——各組件綜述之Nova
※Google更新Flutter,添加網頁開發工具組件