background image

关于

.NET 的 MVC 工厂模式各层间调用关系

就是连同工厂、接口、控制层、全部在一起的

MVC 模式。

普通的三层结构:

UI / BLL / DAL ,数据实体使用 Model 封装。这种“三层结构”之间是顺序的调用关系,

UI 调用 BLL ,BLL 将操作组织并安排 DAL 层,DAL 层操作数据库,每层之间的关系都很紧密,所以协

同开发时互相的依赖性较强,项目结构耦合度大。

基于高内聚低耦合的原则,层和层之间的调用考虑引入接口

 IDAL 进行规范和分割。BLL 层要求 DAL 层

实现的功能先定义好接口

 IDAL ,BLL 层就可以借用这些接口去完成业务流程,不必关心实现细节。而 

DAL 层只需要按照 IDAL 接口中的定义的操作分别实现,就可以满足 BLL 的要求。这样,使用接口对层

和层之间的调用实现分离,设计时都互相不需要了解细节,而在

程序

运行时,只需要让

 BLL 层的接口引

用指向对应的实际

 DAL 对象,

程序

自然调用实现好的

 DAL 中的功能。

程序

通过接口实现了更灵活的分层,但毕竟接口引用哪个

 DAL 层对象还是要在 BLL 层进行管理。在数据

库表很多,

DAL 对象也就会很多的情况下,BLL 层中关于 DAL 的管理也需要很多工作,如何管理更方面?

工厂模式。

工厂模式,顾名思义,就是生产某件产品的场所,在

程序

中起到的也是类似的功能,作用就是生产各式各

样的

 DAL 对象。这样,BLL 层在需要接口的引用指向对应的 DAL 对象的时候,只需要向工厂要就行了,

具体是如何产生的那个对象,

BLL 不需要关心。这个框架中,DALFactory 工厂起到的作用就是生产各种 

DAL 产品,交给 BLL 层使用,如果需要修改某个 DAL 的应用,只需要在工厂中修改,BLL 依旧还是向

工厂要对应的产品即可。

示例

代码

·BLL  :

public class UserService

{ private IUserManager ium = DALFactory.CreateUserManager(); }

·DALFactory  :

public class DataAccess

{

public static IUserManager CreateUserManager()

{ return new UserManager(); }

}