前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 单例字典

原 单例字典

作者头像
魂祭心
发布2018-05-17 17:40:34
5270
发布2018-05-17 17:40:34
举报
文章被收录于专栏:魂祭心魂祭心魂祭心
    public abstract class BaseCache<Tkey,Tvalue> :CachesInterface<Tkey, Tvalue>
    {
        private Dictionary<Tkey, Tvalue> _innerStore;
        protected Dictionary<Tkey, Tvalue> DataStore {
            get { if (_innerStore == null)
                    return _innerStore = new Dictionary<Tkey, Tvalue>();
                return _innerStore;
            }
        }
        public bool CacheEnable { get; set; }

        protected BaseCache()
        {
            CacheEnable = true;//暂时默认位true
            _innerStore = new Dictionary<Tkey,Tvalue>();
        }

        public Tvalue GetCache(Tkey key) {
            Tvalue value = default(Tvalue);
            if (CacheEnable && DataStore.TryGetValue(key, out value))
            {
                return value;
            }
            else
            {
                value = CreateInstance(key);
                DataStore[key] = value;
                return value;
            }
        }

        protected abstract Tvalue CreateInstance(Tkey type);
    }

从这个抽象类继承重写CreateInstance,单例的完成在子类中

    public sealed class ViewCaches :BaseCache<string,ViewMessage>
    {
        private volatile static ViewCaches instance = null;
        public static ViewCaches Instance
        {
            get
            {
                return instance;
            }
        }
        static ViewCaches() 
        {
            instance = new ViewCaches();
        }
        private ViewCaches()  :base() { }

        protected override ViewMessage CreateInstance(string type)
        {
            ViewMessage viewMessage = new LOS.ViewMessage(type);
            return viewMessage;
        }
    }

实例字段和构造完成里对象的全局唯一性,重写CreateInstance用于在找不到value的时候处理出需要的数据放回DataStore。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档