第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過將不同的參數(shù)傳遞給構(gòu)造函數(shù)來允許實例化不同的單例類

如何通過將不同的參數(shù)傳遞給構(gòu)造函數(shù)來允許實例化不同的單例類

C#
catspeake 2021-07-14 13:10:02
我的項目中有一個類,我只想通過構(gòu)造函數(shù)傳遞特定參數(shù)來實例化它一次,但是當我傳遞不同的參數(shù)時,它應該實例化一個新的參數(shù)。我如何使用單例設(shè)計模式實現(xiàn)這一目標?或者,如果單例無法實現(xiàn),您能否建議另一種設(shè)計模式?class Program{static void Main(){    SiteStructure s = SiteStructure.Instance;}}public sealed class SiteStructure{static readonly SiteStructure _instance = new SiteStructure();public static SiteStructure Instance{    get    {        return _instance;    }}SiteStructure(){    // Initialize.}}
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

您必須修改_instance變量的初始化方式,使用接受您想要傳入的參數(shù)值的函數(shù)。此外,_instance變量不能再readonly像它需要在新函數(shù)內(nèi)部初始化一樣。


[TestMethod]

public void CreateSingletonInstance()

{

    SiteStructure s = SiteStructure.GetInstance("Abc123");

    Debug.Print(s.Parameter); // outputs Abc123


    SiteStructure s2 = SiteStructure.GetInstance("Is it really a singleton?");

    Debug.Print(s2.Parameter); // outputs Is it really a singleton?


    SiteStructure s3 = SiteStructure.GetInstance("Abc123");

    Debug.Print(s3.Parameter); // outputs Abc123


    Assert.AreNotEqual(s, s2); // Check to make sure they are different instances

    Assert.AreEqual(s, s3); // Check to make sure they are the same instance

}


public sealed class SiteStructure

{

    static Dictionary<string, SiteStructure> _siteStructures = new Dictionary<string, SiteStructure>();

    static object _instance_Lock = new object();

    public static SiteStructure GetInstance(string parameter)

    {

        if (!_siteStructures.ContainsKey(parameter))

        {

            lock (_instance_Lock)

            {

                if (!_siteStructures.ContainsKey(parameter))

                {

                    _siteStructures.Add(parameter, new SiteStructure(parameter));

                }

            }

        }


        return _siteStructures[parameter];

    }


    private SiteStructure(string parameter)

    {

        // Initialize.

        Parameter = parameter;

    }


    public string Parameter { get; set; }

}


查看完整回答
反對 回復 2021-07-18
?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text.RegularExpressions;


namespace Rextester

{

    public class Program

    {

        public static void Main(string[] args)

        {

            var g = SiteStructure.Instance(4);

        }

    }




    public sealed class SiteStructure { 

 public static SiteStructure Instance() 

 { return new SiteStructure();

 }

        public static SiteStructure Instance (int x)

        { return new SiteStructure (x);

        }


 SiteStructure() { }

SiteStructure(int x) { Console.WriteLine("Hello"); }



}


}


查看完整回答
反對 回復 2021-07-18
  • 2 回答
  • 0 關(guān)注
  • 274 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號