以下是描述在一个数据访问层的设计过程(只一个总体设计并不包含细节)运用基于接口编程的方法设计;以下纯属表达我个人的设计过程中方法,如果朋友有问题和见解发表出来多多交流。
在做数据库应用系统的过程经常要和数据处理对象,SQL语句打交道;做久了就发觉其实这些工作可以通过封装相应的组件来简化这方面的工作。于是就下定决心把这个组件做出来,在做之前先把以前的东西和上网看的资料总结一下,重要一点是数据在处理SQL语句有什么细节的差别如参数名标认等;明确做这个组件目的和组件需要完成的功能。
组件的功能包括:
能处理所有实现IDbCommand接口的对象。
支持实体对象的操作:增加、删除、修改和查询等操作。
能对不同数据库进行操作。
组件的功能明确之后就制定相应的接口,因为我觉接口可以规范组件的开发,在编写代码的过程中不用考虑模块与模块之间细节上的实现。
组件的主要接口包括:
IDriverType 数据设备提供者描述接口
IDateSession 数据处理环境描述接口
IField 字段表达式描述接口
IExpression 查询表达式描述接口
组件还内还有很多相关接口如:.NET FrameWork 的IDbConnection,IDbDataAdapter和一些命令持久化应用接口等;这些都是内部处理就一一详细描述了。
IDriverType接口
数据库提供者描述接口,主要功能是实现组件处理不同数据库的能力。是组件内部处理数据所用到的对象和生成相应SQL的关键标识的提供者。是组件的核心部分,但确是组件代码结构最简单的部份,主要是方便其他开发人员扩展出新的数据库提供者。
IDataSession接口
数据处理环境描述接口,主要的功能是对数据库进行不同的操作;它除了能处理所有实现的IDbCommand对象以外,还能对实体对象进行增、删、改、查等操作并反映到数据库中;数据的事务处理等功能。IDataSession必须依赖于IDriverType,因为IDataSession用到数据处理对象必须由IDriverType所提供。
IField接口
字段表达式描述接口,主要功能是描述更新和插入数据时相应的字段信息。用于处理更改个别字段所使用的。正常情况下应该使用实体对象插入或修改。
IExpression接口
查询表达式描述接口,主要功能是生成SQL的条件表达式;通过这个接口可以实现任何复杂的条件表达式构造。因为在处理对象操作的情况下是不能和直接编写SQL条件语句相关结合,所以抽取这样一个接口结合对象操作上更方便。虽然通过IExpression可以实现任意的查询条件,但并不能说明它能代替SQL语句;毕竟在一些很复杂的查询中SQL相对来说比较直观。IExpression也是依赖于IDriverType,因为不同数据库在参数名的标识上是有区别的.
以上是组件在设计时主要功能实现描述,