设计模式笔记之 - Factory
为了征询DIP原则,在很多情况下都不能与具体类实例相关联,用NEW关键字就违反了这一原则,当然一些不会改变的类,比如String这些是没必要隔离什么的。如果具体类是非常易变的,依赖就会带来问题,那么怎样避免使用具体的类呢,这就是Factory的用武之地。
Factory模式的大致的意思是,创建具体类实例的职责由“工厂类”代办,返回相应的接口,用户只需要操作这些抽象后的接口即可,从而隔离与具体类的依赖。
在.NET企业级开发中此模式最常用的地方莫过于DAL层组件,此模式可以通过反射机制通过配置创建相应的DAL实例,这样应用程序就可以轻松的创建出支持多种数据库的应用,现以此应用为例予以分析。
以下图为例表现了此模式运用在DAL层的机制:
其中:
BLL为一组调用的客户端,它调用DALFactory返回相应的IDAL进行操作相应的方法。
IDAL为一组依据客户调用的方法接口,比如返回订单号等等。
DALFactory为工厂类,通过被BLL调用相应的静态方法返回相应的IDAL实现类实例。
SQLServerDAL、OracleDAL分别为实现DAL的SQLServer实现和Oracle实现,这里面放置着与数据库直接打交道的方法。
这样,DALFactory就可以通过读取配置文件,依靠.NET的反射机制创建相应数据库的实例,对设计好的软件来说,要改变数据库只需要改变相应的配置即可。