[原创]简单工厂模式和抽象工厂模式
简单工厂模式
假设不同实现的DAL层,抽象出一个IDAL接口层,工厂模式的作用就是根据配置,获得不同实现的DAL层
/// <summary> /// 简单工厂,提供众多 简单工厂方法,来创建 不同的 业务接口对象 /// </summary> public class BLLAbsFatoryFake { public IBLL.IUsers GetBLLUser() { string strType = System.Configuration.ConfigurationManager.AppSettings["bllType"].ToString(); if (strType == "bll") { return new BLL.Users(); } else { return new BLLA.Users(); } } public IBLL.IMsg GetBLLMsg() { string strType = System.Configuration.ConfigurationManager.AppSettings["bllType"].ToString(); if (strType == "bll") { return new BLL.Msg(); } else { return new BLLA.Msg(); } } }
但是简单工厂的问题是每获取一个DAL类都需要根据配置选择一次。
抽象工厂则只是判断获取不同实例的工厂。
/// <summary> /// 业务抽象工厂类 /// </summary> public abstract class 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 BLLFactory(); break; case "blla": bllFactory = new BLLFactoryA(); break; } return bllFactory; } public abstract IBLL.IUsers GetUser(); public abstract IBLL.IMsg GetMsg(); }