با عرض سلام
دوست عزیز ابتدا شما باید موضع خود رو درباره مسئله زیر مشخص کنید:
اگر فرم شما که قرار است به صورت سینگلتون باشد با پارامتر x فراخوانی شده و یک نمونه از آن ایجاد شده حالا اگر با پارامتر y فراخوانی شود آیا باید در این فرم که از قبل ایجاد شده ، چگونه این پارامتر تاثیر کند.
آیا باید در فرم تغییر ایجاد شود یا بدون تغییر بماند؟
با فرض اینکه باید تغییر ایجاد شود بنده یک مثال میزنم.
اگر کلاس سینگلتون ما به صورت زیر باشد:
sealed class SingletonClass
{
// Static members are lazily initialized.
// .NET guarantees thread safety for static initialization
private static readonly SingletonClass instance =
new SingletonClass();
// Note: constructor is private.
private SingletonClass() { }
public static SingletonClass GetInstance()
{
return instance;
}
}
بنده این کلاس رو اصلاح کردم و به صورت پارامتریک درآوردم که این پارامتر در فرم ایجاد شده و یا از قبل موجود ، تاثیر می گذارد
sealed class SingletonClass
{
// Static members are lazily initialized.
// .NET guarantees thread safety for static initialization
private static SingletonClass instance =
new SingletonClass(0);
//this is a private field
int n;
// Note: constructor is private.
private SingletonClass(int x)
{
this.n = x;
}
public static SingletonClass GetInstance(int x)
{
if (instance == null)
{
instance = GetInstance(x);
return instance;
}
else
{
instance.n = x;
return instance;
}
}
}