溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

享元和單例模式(六)

發(fā)布時間:2020-07-19 09:26:50 來源:網(wǎng)絡(luò) 閱讀:235 作者:ccandzy 欄目:編程語言

單例模式:整個項目只存在一個對象實例.


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


享元模式:可以是整個項目共用一個對象實例,也可以按需要創(chuàng)造不同的實例.


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也算是一個簡單的享元模式的應(yīng)用.

Normal可以實例化新的對象,也可以項目共享MemberLevelConfig中的對象

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI