Beer house 中DAL层的结构讨论
相信大家中有不少人都研究过The Beer House这个示例项目
它的DAL层是如下一种结构:
DataAccess 派生出 objProvider,这个派生类中定义出一堆抽象方法,这些抽象方法在它的子类——具体数据库实现类(如:SqlObjProvider)中实现
当它需要增加obj模块或者使用不同具体实现(如使用MySQL数据库)是,需要添加至少两个类ObjProvider和具体实现(如:MySqlProvider,OracleProvider)
所以,个人认为可以用另一种方式实现
DataAccess 派生出具体实现类如SqlProvider,MySqlProvider,OracleProvider这个派生类中实现具体数据库数据的基本操作,ObjProvider使用而不是继承这个派生类(在ObjProvider中要屏蔽具体数据库的差异,这应该可以做到)业务层只与自己对应的objProvider联系
这样,当添加obj模块或新的数据库时,就可以只添加对应Obj或者DBProvider
我想请大家说一下自己的看法,因为自己很没底:-)
(我是个新手,水平比较低,有不对的地方请大家指正)