数据中介者 --- 核心思想(java/android)

数据中介者(Data-Mediator)是一个强大的数据层框架,利用编译时注解等技术简化数据层维护,支持属性变化监听、数据绑定等功能。本文介绍其核心思想、特性及使用方法。

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'
    复制代码

学习路径

相关demo或教程.

想要体验最新的特性 ?

请到github/data-mediator体验。 如果觉得不错,请star支持下项目哈。

欢迎大家star, fork,contribute ,提issue. 它会越来越棒。

Thanks for reading !

技术源于分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值