PDA

View Full Version : فقط یک نمونه از یک متغیر



1485159
سه شنبه 11 خرداد 1389, 13:37 عصر
سلام
من میخوام توی یه یونیت یه کلاس تعریف کنم و یه نمونه ازش ایجاد کنم که تو کل برنامه ازش استفاده کنم. ولی میخوام که دیگه نشه بغیر از اون یونیت توی هیچ یونیت دیگه ای متغیری از اون کلاس ایجاد کرد. چطوری؟

vcldeveloper
سه شنبه 11 خرداد 1389, 18:38 عصر
برید درباره Singleton pattern تحقیق کنید. دلفی 2010 توی patternهای خودش در Model View نمونه آماده ایی از آن را ارائه میکنه. درباره اش نمونه کد با دلفی و سایر زبان ها زیاد هست.

1485159
سه شنبه 11 خرداد 1389, 20:11 عصر
من یه سرچی کردم ولی چیزی به دست نیاوردم. اگه ممکنه یه مثال بزنید.

vcldeveloper
چهارشنبه 12 خرداد 1389, 01:09 صبح
من یه سرچی کردم ولی چیزی به دست نیاوردم. اگه ممکنه یه مثال بزنید.
کجا جستجو کردید؟ اگر عبارت Singleton Pattern را در گوگل جستجو می کردید، اولین نتیجه جستجو لینک زیر در ویکی پدیا بود، که در داخل خودش یک نمونه از پیاده سازی این الگو در دلفی 2010 را هم ذکر کرده:
http://en.wikipedia.org/wiki/Singleton_pattern

1485159
چهارشنبه 12 خرداد 1389, 08:22 صبح
مثلا در این نمونه کد من چیزی فراتر از متفاوت بودن نوع تعریف توابع نمیبینم!

type
TSingleton = class
private
class var FInstance: TSingleton;
class destructor Destroy;
class function GetInstance: TSingleton; static;
public
class property Instance: TSingleton read GetInstance;
end;

// Class code in implementation section
class destructor TSingleton.Destroy;
begin
if Assigned(FInstance) then
FInstance.Free;
end;

class function TSingleton.GetInstance: TSingleton;
begin
if not Assigned(FInstance) then
FInstance := TSingleton.Create;
Result := FInstance;
end;

vcldeveloper
چهارشنبه 12 خرداد 1389, 16:33 عصر
مثلا در این نمونه کد من چیزی فراتر از متفاوت بودن نوع تعریف توابع نمیبینم!
GetInstance دفعه اولی که اجرا میشه، شی رو ایجاد میکنه، دفعات بعد، شی جدیدی ایجاد نمیشه، بلکه از همون شی قبلی در دفعات بعد استفاده میشه. وقتی هم که اجرای برنامه خاتمه پیدا کنه، شی ساخته شده به طور خودکار آزاد میشه.