码迷,mamicode.com
首页 > 其他好文 > 详细

14、抽象工厂获取数据访问层的实例,缓存的使用和反射的使用

时间:2016-04-06 13:28:56      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

工厂类的代码:

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);
        }
    }
}

  

14、抽象工厂获取数据访问层的实例,缓存的使用和反射的使用

标签:

原文地址:http://www.cnblogs.com/clcloveHuahua/p/5358779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!