享元和单例模式(六)

发布时间:2020-07-19 09:26:50 作者:ccandzy
来源:网络 阅读:229

单例模式:整个项目只存在一个对象实例.


public class Single
    {
        private static Single _single = null;
        private static object lockObject = new object();
        private Single()
        {
           
        }
        public static Single CreateInstance()
        {
            if (_single == null)
            {
                lock (lockObject)
                {
                    if (_single == null)
                    {
                        _single = new Single();
                    }
                }
            }
            return _single;
        }
    }

如果是多线程则需要用到Lock和外层多加一层If


享元模式:可以是整个项目共用一个对象实例,也可以按需要创造不同的实例.


public static class MemberLevelConfig
{
    public static Dictionary<MemberLevel, BaseMember> MemberDictionary = new Dictionary<MemberLevel, BaseMember>()
    {
        {MemberLevel.Normal,new NormalUser() },
        {MemberLevel.Silver,new SilverUser() },
        {MemberLevel.Gold,new GoldUser() },
        {MemberLevel.Diamond,new DiamondUser() },
    };
     
}

策略模式和简单工厂中(二)中的MemberLevelConfig也算是一个简单的享元模式的应用.

Normal可以实例化新的对象,也可以项目共享MemberLevelConfig中的对象

推荐阅读:
  1. c++单例模式 ---超详细
  2. 单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

设计模式 享元单例

上一篇:一条语句将数值显示为百分比,含%

下一篇:数据库将两张表进行横向连接(拼接成一张表的形式显示)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》