标签:
工厂类的代码:
namespace Shop.DALFactory
{
/// <summary>
/// 抽象工厂。完成数据层中对象的创建(反射对象)
/// </summary>
public class AbstractFactory
{
//获取程序集的名称
private static string DalAssemblyPath = ConfigurationManager.AppSettings["DalAssemblyPath"];
//获取程序集的命名空间
private static string NameSpace = ConfigurationManager.AppSettings["NameSpace"];
/// <summary>
/// 通过抽象工厂创建的一个数据访问层的类的实例
/// </summary>
/// <returns></returns>
public static IDAL.ICustomerDAL CreateCustomerDAL()
{
//获取程序集下具体要创建的类的名称
string fullClassName = NameSpace + ".CustomerDAL";
return CreateInstance(fullClassName, DalAssemblyPath) as IDAL.ICustomerDAL;
}
/// <summary>
/// 通过反射的方法反射一个类的实例
/// </summary>
/// <param name="fullClassName">具体命名空间空间下的类</param>
/// <param name="dalAssemblyPath">命名空间</param>
/// <returns>实例的object对象</returns>
private static object CreateInstance(string fullClassName, string dalAssemblyPath)
{
//先从系统的缓存中获取实例对象
object instance= Shop.Commom.CacheHelper.GetCache(fullClassName);
if (instance == null)
{
//如果系统中未找到缓存对象,就通过反射的方法获取实例的对象
Assembly ass = Assembly.Load(dalAssemblyPath);
instance = ass.CreateInstance(fullClassName);
//并将实例对象写入键(名称为命名空间加类型名)的值
Shop.Commom.CacheHelper.InsertCahch(fullClassName, instance);
}
return instance;
}
}
}
缓存类的代码:
namespace Shop.Commom
{
public class CacheHelper
{
/// <summary>
/// 根据键从缓存中取出值
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
public static object GetCache(string key)
{
//从系统中获取缓存的对象
System.Web.Caching.Cache cache = HttpRuntime.Cache;
return cache.Get(key);
}
/// <summary>
/// 设置缓存数据
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void InsertCahch(string key,object value)
{
System.Web.Caching.Cache cache = HttpRuntime.Cache;
cache.Insert(key, value);
}
}
}
标签:
原文地址:http://www.cnblogs.com/clcloveHuahua/p/5358779.html