溫馨提示×

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

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

單例模式的兩種寫法(餓漢式與懶漢式)

發(fā)布時(shí)間:2020-07-18 06:46:02 來源:網(wǎng)絡(luò) 閱讀:1089 作者:緣來沒法擋 欄目:編程語言

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace 單例模式

{

    /// <summary>

    /// 單例模式作用產(chǎn)生唯一對(duì)象

單例類只能有一個(gè)實(shí)例。

單例類必須自己創(chuàng)建自己的唯一實(shí)例。

單例類必須給所有其它對(duì)象提供這一實(shí)例。

應(yīng)用:

每臺(tái)計(jì)算機(jī)可以有若干個(gè)打印機(jī),但只能有一個(gè)Printer Spooler,避免兩個(gè)打印作業(yè)同時(shí)輸出到打印機(jī)。

一個(gè)具有自動(dòng)編號(hào)主鍵的表可以有多個(gè)用戶同時(shí)使用,但數(shù)據(jù)庫中只能有一個(gè)地方分配下一個(gè)主鍵編號(hào)。否則會(huì)出現(xiàn)主鍵重復(fù)。

    /// </summary>

    class Program

    {

        static void Main(string[] args)

        {

            //餓漢式

            Penson p = Penson.GetPenson();

            //懶漢式

            Animus animus = Animus.GetAnimus();

        }

    }

    class Penson

    {

        /// <summary>

        /// 單例模式之餓漢式

        /// </summary>

        //第一步設(shè)置私有的構(gòu)造函數(shù)

        private Penson()

        { }

        //第二步:設(shè)置全局唯一變量

        private static Penson _penson = new Penson();

        //第三步:寫返回值為Penson類型的函數(shù)

        public static Penson GetPenson()

        {

            return _penson;

        }

    }

    class Animus

    {

        /// <summary>

        /// 單例模式之懶漢式

        /// </summary>

        private Animus() { }

        private static Animus _animus = null;

        public static Animus GetAnimus()

        {

            if (_animus == null)

            {

                _animus = new Animus();

            }

            return _animus;

        }

    }

}


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

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

AI