三层架构之泛型抽象工厂

三层架构之泛型抽象工厂

原来写过一篇三层架构之泛型应用的简单登录,已经过去2年了,今天有一朋友问我关于抽象工厂的问题,就把自己后来解耦的方法从项目中拿出来了,方便大家学习。

 

我重新写了一个例子项目,如下截图:

 

 

XU.Model层中有一个抽象类BaseModel.cs,User.cs是用户实体类,继承与BaseModel类,是用于类型安全考虑的

 

 BaseModel.cs

 

 User.cs

 

XU.FactoryDAL层是用于反射获取实例,其中只有一个类

 

 DataAccess<T>.cs

 

XU.IDAL层依赖与XU.Model,其中包含一个基接口IBaseDAL.cs,还有一个用于定义一些基接口中没有方法的接口IUserDAL,继承与基接口IBaseDAL<T>

 

 IBaseDAL<T>.cs

 

 IUserDAL.cs

 

实现XU.IDAL中接口有2个类库,一个是MSSQL方案,一个是MYSQL方案,这2个类库都依赖于XU.Model和XU.IDAL,下面是实现方案

 

XU.MSSQLDAL的实现如下

 

 UserDAL.cs

 

XU.MYSQLDAL的实现如下

 

 UserDAL.cs

 

XU.BLL业务逻辑层中包含了一个用于继承的基类BaseBLL<T>和用户业务逻辑UserBLL类,这层依赖XU.IDAL,XU.Model,XU.FactoryDAL库

 

 BaseBLL.cs

 

 UserBLL.cs

 

XU.ConsoleDemo是一个控制台程序,本准备弄一个网站测试,觉得麻烦,用这个讲解抽象工厂更简单和直观

 

 App.config

 

 Program.cs

 

 

注意:XU.ConsoleDemo是不会直接引用XU.MSSQLDAL和XU.MYSQLDAL的,但是XU.ConsoleDemo中的Debug目录下要把编译好的XU.MSSQLDAL.dll和XU.MYSQLDAL.dll放进去,如果是网站就要放入网站中的Bin文件夹下

 

 

 

 

原文地址:https://www.cnblogs.com/Leo_wl/p/3495712.html