.NET抽象工厂模式微理解--教你在项目中实现抽象工厂
2014-04-01 11:13
363 查看
.NET抽象工厂模式微理解--教你在项目中实现抽象工厂
最近在学习MVC,对于MVC里面的一些项目上的东西都和抽象模式有关,今天就微说明一下个人对于抽象工厂模式的理解,以方便学习MVC及工厂模式相关的同事和博友们理解。不足之处,还请斧正!
首先简单阐述一些三层的关系,相信观看该文章的博友们对于三层设计早已经是烂熟于心了,我这边就简单说明一下:
用户界面表示层(Web)
业务逻辑层(BLL)
数据访问层(DAL)
1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
下面阐述一些抽象工厂模式的作用,请看图(该图为我一个老师所画,在这里给大家简单看一下)
View Code
在AXCBLL层里面新建一个PeopleBLL类,继承IPeopleBLL类,该类里面的内容是IAXCBLL层里的具体的方法的业务实现,如下:
与在AXCFactoryDAL层里新建工厂差不多,在AXCFactory层里新建一个抽象类:AbsFactoryBLL,该类实现了读取配置文件中的配置的业务逻辑层,方便实现支持多数据库开发多个业务逻辑层,如下,
在新建一个BLLFatory类,该类继承了AbsFactoryBLL,返回一个具体的业务逻辑层实例,如下:
好了,基础的工作我们已经完成的差不多了,现在就在web层里配置一下webconfig文件,如下:
调用一下我们所写的方法,方法如下:
最好的效果图如下:
好了,以上就是本人对于抽象工厂模式的微理解。希望你看完本文也对抽象模式有一个微理解。
最近在学习MVC,对于MVC里面的一些项目上的东西都和抽象模式有关,今天就微说明一下个人对于抽象工厂模式的理解,以方便学习MVC及工厂模式相关的同事和博友们理解。不足之处,还请斧正!
首先简单阐述一些三层的关系,相信观看该文章的博友们对于三层设计早已经是烂熟于心了,我这边就简单说明一下:
用户界面表示层(Web)
业务逻辑层(BLL)
数据访问层(DAL)
1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
下面阐述一些抽象工厂模式的作用,请看图(该图为我一个老师所画,在这里给大家简单看一下)
public interface IPeopleBLL { List<AXCModel.PeopleModel> getPeopleList(); }
View Code
在AXCBLL层里面新建一个PeopleBLL类,继承IPeopleBLL类,该类里面的内容是IAXCBLL层里的具体的方法的业务实现,如下:
public class PeopleBLL:IAXCBLL.IPeopleBLL { // IAXCDAL.IPeopleDAL IPeopleDal =null; /// <summary> /// 数据抽象工厂 - 由抽象工厂类的 静态方法创建 : 父类 obj = new 子类(); /// </summary> AXCFactoryDAL.AbsFactoryDAL absFactoryDAL = AXCFactoryDAL.AbsFactoryDAL.GetFatory(); public List<AXCModel.PeopleModel> getPeopleList() { IAXCDAL.IPeopleDAL IPeopleDal = absFactoryDAL.GetPeople(); return IPeopleDal.getPeopleList(); } }
与在AXCFactoryDAL层里新建工厂差不多,在AXCFactory层里新建一个抽象类:AbsFactoryBLL,该类实现了读取配置文件中的配置的业务逻辑层,方便实现支持多数据库开发多个业务逻辑层,如下,
/// <summary> /// 根据配置文件 获取 实体业务工厂 对象 /// </summary> /// <returns></returns> public static AbsFactoryBLL GetFatory() { string strType = System.Configuration.ConfigurationManager.AppSettings["bllType"].ToString(); AbsFactoryBLL bllFactory = null; switch (strType) { case "bll": bllFactory = new BLLFatory(); break; } return bllFactory; } public abstract IAXCBLL.IPeopleBLL GetPeople(); }
在新建一个BLLFatory类,该类继承了AbsFactoryBLL,返回一个具体的业务逻辑层实例,如下:
public class BLLFatory :AbsFactoryBLL { public override IAXCBLL.IPeopleBLL GetPeople() { return new AXCBLL.PeopleBLL(); } }
好了,基础的工作我们已经完成的差不多了,现在就在web层里配置一下webconfig文件,如下:
<appSettings> <add key="bllType" value="bll"/> <add key="dalType" value="dal"/> </appSettings>
调用一下我们所写的方法,方法如下:
最好的效果图如下:
好了,以上就是本人对于抽象工厂模式的微理解。希望你看完本文也对抽象模式有一个微理解。
相关文章推荐
- 抽象工厂 java实现
- JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种用法(让你真正理解ajax)
- 抽象工厂(Abstract Factory)模式的Java实现[00原创]
- 用C#实现的数据库抽象工厂(二)
- 设计模式之抽象工厂,C++实现(一)
- DRP项目(十):抽象工厂加反射(一)
- javaweb项目中利用反射实现工厂模式
- 用C#实现的数据库抽象工厂
- vb.net对抽象工厂的实现雏形
- DRP项目(十):抽象工厂加反射框架实例(二)
- C#抽象工厂简单实现类
- 用C#实现的数据库抽象工厂(二)
- SAF 中抽象工厂的实现(Remoting的实体统一由服务器端实现)
- MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等
- 对VUE项目实现的理解
- 三层架构之抽象工厂加反射——实现数据库转换
- 图解抽象工厂,简单理解
- 设计模式的C++实现 3.抽象工厂
- 三层架构之抽象工厂加反射----实现数据库转换
- C#结合反射实现抽象工厂