解决问题:
实际应用中,很多数据都可以一个键名来管理的,而这个键名通常是可以固定不变的;同时,一组这样的数据可能需要经常在不同的格式或存储介质上相互转换和迁移,所以应该可以一组固定的键名来管理一类或一批类似的数据,把数据的转换和迁移都封装起来,外部只通过一个泛型的统一接口来管理数据的输入输出——这样一来,我们只需要关心数据的流向,而不必要总是考虑数据的转换问题,可以大大减代码量,提高重用率;
结构组成:
数据对象的接口:
作为一个数据对象,不管是数据格式还是介质,都必须是可读可写的,只可能是读写的方法 或数据格式有不同。
/**
* 可以读取和写存数据的接口
*/
public static interface IDataObject {
/**
* 取数据接口,需要提供一个 说明数据格式的对象类型
* @param dataClass
* @return
*/
public <T> T getData(T dataClass) ;
/**
* 写数据接口,参数对象类型同时说明了 输入数据的格式
* @param data
*/
public <T> void setData( T data) ;
}
实现中 可以根据泛型的类型 确定 如何对 输入输出进行操作:判断 可以使用 重载方法 或if else,switch语句因为Java版本的问题 基本上不考虑使用;
键名的管理器对象:
符合 之前定义的数据对象接口
一个数据 如果可以用一个键名固定的话,往往它的数据格式也就固定了,比如说商品的价格,肯定是多少元;说气温,肯定是多少度到多少度;说姓名,肯定是有名有姓更简单概括就是一个代号;再比方买苹果,到超市里去买,肯定是论公斤;到集贸市场上,和小商小贩搞价肯定是论市斤,有时候赶巧能碰上论堆卖的;如果去果园或批发市场买苹果的话,可能人家都懒得和你论公斤,人家都论箱卖【可能还有论筐卖的,呵呵】。
所以对应标准的数据可能只需要定义一个键名和对应值得类型就足够了,对于一些结构比较复杂或可能多变的数据,可以需要一个内部数据格式控制对象来预先处理一下数据格式的类型
- 不需要数据结构有特殊处理的 基本数据类型关联 的 键值:
- 需要数据结构有特殊处理的 符合数据类型关联 的 键值:
批量键名和值的管理对象:
符合 之前定义的数据对象接口
把 所有定义的 键名的管理器对象 放到一个数组列表中,在实现类中 定义控制列表中数据的转换和组合的方法
待续