Data-Mediator 核心工作流圖
概念
- 資料中介者是一個強大的資料層框架(其實業務互動的一切皆可為資料), 該框架利用編譯時註解,外掛等技術。解決資料層的維護麻煩的問題。 以及支援強大的特性。
- 資料中介者的核心思想實際上就是代理和中介(兩者的思想有類似).
- 代理:
相信大部分人都知道在程式設計中經常都會用到代理技術,比如AOP動態代理。但是他不具備通用性,需要為特定的物件寫對應的封裝。(java可以用cglib, android 可以用dexmarker處理), 甚至java還有對應的agent技術(非ClassLoader技術,一般j2ee或者寫外掛才用),可以在編譯時/執行時改變位元組碼。 - 中介者:
實際上跟我們買房子的中介, 買東西的商店是類似的。 中介者可以減少使用者的時間和互動成本。 設想一下如果我們買房子都只找業主,當然會直接點,但是你要跑的流程,手續會很多。還得了解相關的法律知識。 又設想下如果我們買東西都去找生產商或者批發商。 你得跑多遠去買東西... . 在程式中有種設計模式就叫中介者模式, 思想實際上是一樣的。
- 代理:
- 所以本框架的核心思想:
- 1), 用註解生成模型(data-module),
- 2), 用中介者和資料實現(data-impl), 資料代理(data-proxy)互動。通過通用的回撥達到我們想要的目的。
- 3), 繫結器Binder 和 資料繫結的註解 都是基於中介者來實現的。
- 涉及的物件及說明.
- data-module: 資料模型(介面型別), 由手動寫的@Fields註解以及intellij外掛輔助生成。
- data-impl : 資料模型的實現. 編譯時註解生成。
- data-proxy: 資料的代理, 編譯時註解生成. 使用時由DataMediator獲取。
- data-mediator: 資料中介者,代表物件DataMediator. 由DataMediatorFactory工廠建立生成。
- Proyperty Callback 屬性回撥。通過DataMediator可註冊與反註冊,以便監聽屬性變化。後面的binder和DataBinding 均是基於此。 代表物件DataMediatorCallback.
- Binder 繫結器, 基於DataMediator演化而來的物件,主要是用於資料和ui介面元素的繫結, 達到每次運算元據即是操作ui的效果。原理是基於Proyperty Callback.
- Data-Binding 代表物件DataBinding. 所有需要資料繫結物件的基類。用於協助註解式的資料繫結,可完美搭配butterknife.
特性
- 1, 支援監聽屬性變化(List, SparseArray 結構同樣支援)
- 2, 自動生成get/is/set, hashCode, equals,toString 方法。 並且可以根據flags快速調整. 支援copy等額外介面。
- 3, 支援鏈式程式設計
DataMediator<Student> mediator = DataMediatorFactory.createDataMediator(Student.class);
//資料代理層
mediator.getDataProxy()
.setName(null)
.setAge(0)
.setId(0);
//資料真正的模型實現
mediator.getData().setName(null)
.setAge(0)
.setId(0);
複製程式碼
- 4, 支援Serializable 和 parcelable資料的序列化. 可以根據欄位flag調整。
- 5,完整支援Google/Gson註解
- 6, 支援資料繫結, 並且可以完美搭配BukkerKnife.
- 7, 支援對資料模型增加自定義方法和常量,自然支援實現自定義介面。
- 8, 支援資料快取。
- 9,支援資料模型之間的依賴或繼承
- 10,外掛支援。
- 'data-mediator-intellij-plugin' 用於生成資料模型介面的方法.
- 'data-mediator-convertor-intellij-plugin' 用於將java bean轉化為基本的資料模型.
- android lint 支援.
compile 'com.heaven7.android.data.mediator.lint:dmlint:1.2' 複製程式碼
學習路徑
- 1, 入門篇
- 2, 專題篇
- 3, 原始碼閱讀
相關demo或教程.
- android 實現parcelable. demo
- 完整支援Gson註解.demo
- 屬性回撥。 詳解
- 資料繫結之android.
- 模型實現自定義方法或實現自定義介面. demo
- 模型外掛 'data-mediator-intellij-plugin' demo:
- 轉換器外掛 'data-mediator-convertor-intellij-plugin' demo.
想要體驗最新的特性 ?
請到github/data-mediator體驗。 如果覺得不錯,請star支援下專案哈。