Android通用框架封装一 数据中心DataCenter框架封装

1 前言

在Android开发中往往会保存和使用各种数据,这些数据按照存储来分,大概会分为3类,第一是保存在内存中的数据,第二是保存在SharedPreferences中数据,第三是保存在SQL数据库中。为了统一管理及访问,使上层应用忽略掉这些差异,及为了减少对SQL及SharedPreferences的操作,往往会对这些进行封装,之前在网络上看到的大多都是对SharedPreferences进行封装,但是这里要介绍一个数据框架,它封装了对内存数据,SharedPreferences,SQL数据的访问,从而方便程序的管理及上层应用层的访问,使应用层的代码更简洁。
该数据框架就叫它数据中心DataCenter框架

2 数据中心框架DataCenter简图

数据中心提供的功能:
1 对数据的存储功能,可按照应用需求,将数据分别存储到内存,SharedPreferences,SQL中
2 对数据的访问,主要是对存储的数据的访问。

数据中心DataCenter的简图如下:
这里写图片描述
数据中心的整体框架如上图,下面依次介绍几个主要的部分。
DataManager提供对外的接口,主要是提供数据变化观察者DataObserver的注册与反注册,另外提供一系列访问数据的接口,例如getUri(),getString\int\Double(),setString\Int\Double()等接口,访问基本类型的数据,对于除了String类型的引用类型数据,可以考虑采用序列化的形式,序列化成String类型的数据存储。反之也一样。
对数据的访问遵循下面两大步骤。
1 获取该数据对应的uri
2 根据uri进行数据的存储或者读取

DataCenterProxy的主要作用就是解耦,这里解耦的方式主要是运用观察者模式,防止DataManager与DataCenter的耦合太紧,另外还包含对数据的有效性及合法性的校验。

DataCenter主要就是对数据访问的实现,首先根据uri来判断是何种类型,内存数据,SP数据,还是SQL数据,并实现好这几种类型的数据。另外,当数据发生变化时,还应该通知DataManager从而通知感兴趣的使用者。

注:这里DataManager与DataCenter的解耦,可以用观察者模式,也可以用Binder模式来解耦,DataManager 作为Client,DataCenter 作为Server,当数据变化时,可以通过客户端向服务端注册监听器,服务端来回调给客户端。

3 数据中心框架DataCenter的设计思路及实现

有了上面的粗略的框架,我们可以根据框架设计更详细的UML类图,如下:
这里写图片描述

几点说明:
1 DataManager对外提供接口主要是以下几个接口
这里写图片描述
在DataCenterProxy中会将这些数据转为String类型。同时getString()也是一样,也会在DataCenterProxy中做处理。
2 DataCenter对外提供的接口只有以下几个

    /**
     * 保存值
     * @param uri
     * @param value
     */
    public void setStringValue(String uri,String value);

    /**
     * 获取值
     * @return
     */
    public String getStringValue(String uri);

    /**
     * 删除指定uri的数据
     * @param uri
     */
    public void deleteStringValue(String  uri);

同时,DataCenter持有IDataBuffer对象,DataCenter会根据uri解析出该数据是那种类型的存储,内存,SP,还是SQL数据库。读取也是一样。当存储数据或者删除数据时,通知IDataCenterObserver数据发生变化或者发生了删除操作

3 IDataBuffer规定了数据的操作,主要是三类,存储,读取,删除
这里写图片描述
下面依次有对内存数据,SP数据,SQL数据的实现。
这里充分的体现了面向对象的六大设计原则,高层之间依赖于抽象,不依赖细节。

关于该框架的详细代码,这里就不贴出来了,是在代码太多,请参考我的github
https://github.com/qiyei2015/EssayJoke 中SDK 下的dc目录

4 数据中心DataCenter框架的优化方向

关于这套框架,我会在后续的开发中不断的优化,同时这里给出可以优化的两个点
1 缓存的设计
缓存的设计还是还有必要的,它可以提高数据的访问速度,对性能的影响比较大,特别对保存在磁盘上的数据而言,因此可以在DataManager 中设计缓存机制,从而保证对SP,SQL 等类型数据的访问速度。缓存可以参考LRU算法。

2 保存对象型,集合型(List,Map)等类型的数据
当前的数据中心框架,目前只能实现对基本类型,以及String类型的数据的访问,后期可以考虑对普通对象的数据的访问,可以使用序列化来实现。另外对于List型,Map型,Bundle型的数据访问也要支持

3 数据中心DataCenter内存优化
关于数据中心DataCenter的优化,内存优化是一个重点,特别是当有太多的数据保存在内存中,而且又引入了缓存设计了情况,对内存的优化特别重要。个人建议:
1. 缓存采用LRU算法,设置一个阈值从而保证内存的使用量
2. 对保存在内存中,使用频率比较低的值建议直接保存在SP或SQL中,降低内存的使用率

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有多种方法可以使用Spring Boot模拟一个数据中心。下面是一种简单的方法: 1. 首先,确保你已经安装了Java和Spring Boot的开发环境。 2. 创建一个新的Spring Boot项目。可以使用Spring Initializr(https://start.spring.io/)来生成基础项目结构。 3. 在项目中添加所需的依赖。对于模拟数据中心,你可能需要添加Spring Data JPA(用于与数据库交互)、Spring Web(用于创建RESTful API)等依赖。可以在项目的pom.xml文件中添加这些依赖。 4. 创建实体类来表示数据中心中的数据。例如,你可以创建一个名为"DataCenter"的类,该类包含与数据中心相关的属性,如名称、位置、服务器等。 5. 创建一个数据访问层(Repository)来操作数据中心。使用Spring Data JPA,你可以简单地定义一个接口并扩展`JpaRepository<DataCenter, Long>`。这将为你提供基本的CRUD操作。 6. 创建一个服务层(Service)来处理业务逻辑。在服务层中,你可以编写方法来处理数据中心的创建、更新、删除等操作。 7. 创建控制器(Controller)来处理HTTP请求。使用Spring Web,你可以创建RESTful API来处理与数据中心相关的请求。例如,你可以创建一个名为"DataCenterController"的类,并在其中定义各种HTTP端点。 8. 运行应用程序并测试API。你可以使用Postman或类似的工具来发送HTTP请求并验证数据中心的模拟行为。 这只是一个简单的示例,你可以根据自己的需求进行扩展和定制。希望对你有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值