當前位置:
首頁 > 知識 > App 組件化/模塊化之路——Repository 模式

App 組件化/模塊化之路——Repository 模式

什麼是 Repository 模式

Repository 這個詞直譯過來倉庫、倉儲的意思。這個意思其實也能反應出 Repository 模式作用。App 開發中少不了對數據的操作,數據的來源可能有很多種:網路、資料庫、文件以及內存中的緩存。而 Repository 就相當於一個倉庫管理員,管理這些數據的存儲。當業務層想要獲取或者存儲數據時,只需要通過 Repository 的管理員進行操作。這樣的好處就是:屏蔽數據來源的操作介面。對於業務層來說不必關心數據存在哪裡,以及如何存儲的。而且也符合我們組件化/模塊化架構設計的思想。即當我們更換數據存儲設備時,例如從 Android 系統 Sqlite 數據轉換為第三方的資料庫時,不會影響到業務邏輯。

設計模式

首先預覽一下 Repository 模式的設計類圖(歡迎拍磚)

App 組件化/模塊化之路——Repository 模式

IDataSource 是定義了數據來源介面,是根據具體的業務需要定義。一般來說,有增、刪、改、查這幾個方法。LocalRepository封裝的是本地存儲方式,實現 IDataSource介面。RemoteRepository封裝的是網路存儲方式,實現 IDataSource 介面。其中 LocalRepositoryRemoteRepository 就是代表著各種存儲方式的具體實現。而 RepositoryFactory就是傳說中的「倉庫管理員」,管理著各種存儲方式,它也是業務層數據層交互的橋樑。

Show me the code

假設目前有個業務是獲取遠程數據的需求,如果本地有緩存數據則從本地獲取,否則從網路中獲取。這樣的業務邏輯很常見,我們用 Repository

模式進行封裝。

首先預覽代碼總體結構

IDataSource

App 組件化/模塊化之路——Repository 模式

LocalRepository

App 組件化/模塊化之路——Repository 模式

RemoteRepository

App 組件化/模塊化之路——Repository 模式

RepositoryFactory

App 組件化/模塊化之路——Repository 模式

使用示例

App 組件化/模塊化之路——Repository 模式

這裡是直接使用了 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

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

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,添加網頁開發工具組件