PetShop4.0架构分析及工厂模式的使用

原创 2007年09月13日 21:57:00

最近几天一直在看Mirosoft发布的PetShop4.0,主要研究了一下其中对于反射工厂的使用以及架构的设计,感觉有所得,特记下本文与大家分享,不到之处欢迎拍砖。

PetShop4.0中对于工厂模式进行了非常经典的使用,其中主要是一下类的工程配合使用,构成数据访问工厂:

1  IDAL层:主要负责对于数据访问层进行接口的定义,模块中相应的方法全部在这一层中进行声明。

2  DAL层:继承IDAL层后,负责实现接口层中所有的方法。

FactoryManagement层:继承IDAL,通过反射的方法获取相应的类对象(DAL),并将DAL强制转换成接口类(IDAL)返回。

4 BLL层:继承FactoryManagement层,获取接口类(IDAL),从而调用该IDAL下的方法。由于这里的IDAL对象实际上是一个指向其对应DAL的指针,所以它的所有方法都是已经被实现了的,调用的时候无障碍。

具体实现流程:

在IDAL接口层中定义模块中所需方法,然后DAL进行IDAL接口类的继承。由于DAL层是针对多方向的,所以继承IDAL接口类的数据访问类可能会是多个。例如最基本的数据访问类,SQLServerDAL和OracleServerDAL,都继承了ServerIDAL接口类。

数据访问工厂FactoryManagement,通过读取Web.config配置文件中的信息获取需要承载的DAL,通过反射的方法将指定的程序集进行承载:(接口类名)Assembly.Load(加载的DAL的命名空间).CreateInstance(加载的DAL的命名空间.类名) 。这方返回的数据访问接口实际上是一个指向数据访问类的接口类,由于类属于引用类型,所以我将这里接口类理解为指向相应数据访问类的指针。

DAL继承了数据访问工厂FactoryManagement,通过调用FactoryManagement中的方法(即上面描述的方法)创建数据访问接口类IDAL,从而可以获取接口类中所有的业务逻辑方法。

BLL业务逻辑层继承了DAL数据访问层,为不同的函数调用DAL中相应的业务逻辑实现,保证了业务逻辑层与具体实现的松耦合,业务逻辑层根本不需要了解业务的具体技术细节,由于PetShop4.0中使用了接口类,使得对象的生成在一个容器中进行,也就是数据访问工厂类中,并且我们可以在这个类中进行对象的管理,从而节省了系统的句柄资源。

如果我们用一个生活中的例子来描述这个流程,就好比有一人家,家里面有N个闺女,父母对于每个闺女都制定了一套单子,上面罗列了出嫁的时候要陪嫁的东西,每个闺女的陪嫁种类都是一样的,但每种东西可能有好有差,比如都陪嫁电视机,大女儿的可能是20寸的,小女儿就是29寸的,HOHO。

陪嫁单细目就是IDAL,每一个闺女各自的罗列了具体陪嫁信息的陪嫁单则是DAL。随后有一人来家里面提亲,具体要提大女儿还是小女儿就是web.config中的配置信息;父母根据提亲的细节拿出来不同的陪嫁单的过程,就是数据访问工厂FactoryManagement通过反射生成IDAL;提亲的人可以通过陪嫁单(IDAL)获得一系列详细信息,比如陪嫁的电视机多大的,戒指有几个,这就是BLL层获取IDAL实例后执行不同的方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PetShop4.0 工厂模式及Profile Provider实现

第一部份:工厂模式 一、项目名称及描述:(实现步骤为:4-3-6-5-2-1) 1、WEB=表示层 2、BLL=业务逻辑层 3、IDAL=数据访问层接口定义 4、Model=业务实体 ...

Microsoft .NET PetShop 4.0 架构与技术分析(七)

六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心。正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的。一件交付给客户使...

Microsoft .NET PetShop 4.0 架构与技术分析(二)

一、PetShop的系统架构设计 前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStor...

Microsoft .NET PetShop 4.0 架构与技术分析(一)

1.框架的概要介绍 微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)