今天整理了一下数据处理模块的接口和类的关系图
系统架构是基于接口来开发的,通过接口调用各模块的实现,通过容器(Unity)配置具体实现类及相应的参数
所有功能都高度独立和服用,空出来的精力可以把每个功能模块做大做强(每个接口可以又n种实现,按需配置),本篇先讲最基本的数据处理模块的架构
一、数据处理通用接口
数据处理主要是5种接口,添加(IDataAdd)、修改(IDataUpdate)、删除(IDataDel)、查看(IDataView)、获取列表(IDataList)及数据操作总接口(IDataOperate)
以上5种接口定义基本能满足大部分数据操作的需求
二、数据库处理子模块相关实现
1、数据库处理子模块只要是TableOperate类(实现接口IDataOperate)
2、对数据库操作必须指定数据库和具体的表,分别通过DbConfig(IDbConfig)和TableOperate(ITableOperate)来配置,通过接口来获取配置信息,如果有特殊的拆库和拆表逻辑可以通过重新实现IDbConfig和ITableOperate来实现
数据操作接口和实现都保持独立,不需要修改
3、TableOperate本身没有数据操作逻辑,是通过泛型仓储类Repository<T>来操作数据库的,仓储类中保留对数据表和字段等信息的映射
其中泛型仓储类Repository<T>中T就是数据领域的模型,该模型上有对数据库中字段的映射关系
三、文本文件处理相关实现
1、文本操作同理也是有一个数据源配置接口IFileSource(及类FileSource)
2、文件操作实现暂时较为简单,主要用于对配置文件操作及期缓存来用的
注:由于文件操作和数据操作同样实现的数据操作基本接口,配置信息存储可以在数据库和文件中都很方便
五、数据处理适配类(DataOperate)
由于该架构是面向接口低耦合的,不同模块间调用数据操作,但是引用另一个模块的模型类显然不能合适,那样就成相互依赖了,这个时候这个类就出来调解这个尖锐矛盾了
1、DataOperate中属性Operater是真是的数据处理对象
2、T类型是接入模块的模型类,S是被调用的模块的模型类,Converter(IConvertType)是中间的桥梁,负责两种模型的相互转化
3、IConvertType同样是一个接口,可以自定类型转化逻辑配置上,当然ConvertType类基本能满足大部分转化需求,因为ConvertType中有一个Map属性,可以做好两个类型中不同属性名的映射
六、数据保存实现
太晚要睡觉了,明天继续......(其后有时间还会把日志、配置管理、缓存等很多公共模块的接口定义及关系整理出来)
原标题:面向接口编程之数据处理模块类图
关键词:接口