PDA

View Full Version : الگوی سینگلتون برای فرمهای پارامتر دار



NewFoxStudent
شنبه 23 خرداد 1388, 10:33 صبح
روش استفاده از اولگوهای سینگلتون توی فرم های پارامتر دار چطوریه

esmaeily-hosein
شنبه 23 خرداد 1388, 12:26 عصر
میتونی پارامترهات به یک متد مثل InitValue یا یه همچین قرار بدی .


public static readonly Form1 Instance=new Form1();

public DialogResult ShowDialogByValue(params int args)
{
//do Something
}


//use
Form1.Instance.ShowDialogByValue(1,2);

NewFoxStudent
شنبه 23 خرداد 1388, 14:22 عصر
ممکنه بیشتر توضیح بدید

NewFoxStudent
شنبه 23 خرداد 1388, 18:54 عصر
کسی نمیدونه

system32
شنبه 23 خرداد 1388, 19:00 عصر
سلام.
ببینید این فایل بدردتون می خوره یا نه.
http://piroozman.googlepages.com/DesignPatterns.rar

NewFoxStudent
شنبه 23 خرداد 1388, 19:16 عصر
ممنونم ولی این مطالب رو میدونم
مشکل من اینه که سازنده های فرمهام اکثرا پارامتر دارن و من نمیتونم الگوی سینگلتون رو براشون اجرا کنم

mohsen_csharp
شنبه 23 خرداد 1388, 21:01 عصر
با عرض سلام
دوست عزیز ابتدا شما باید موضع خود رو درباره مسئله زیر مشخص کنید:
اگر فرم شما که قرار است به صورت سینگلتون باشد با پارامتر 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;
}
}
}