الگوهای طراحی برنامه نویسی -بخش دوم معرفی الگوی Singleton

naeemaei Creational ِDesign Pattern, الگوهای طراحی , , , ,

نام الگوی طراحی Singleton
دسته بندی creational design patterns

تعریف الگوی Singleton

یکی از ساده ترین الگوی های طراحی Singleton می باشد. یک کلاس زمانی Singleton است که بیش از یک شی از روی آن نتوان ساخت. در واقع این کلاس فقط یکبار نمونه سازی می شود و پس از آن از همان نمونه ساخته شده استفاده می کنیم.

به این نکته توجه کنید که کلاس دارای الگوی Singleton یک کلاس استاتیک نیست بلکه یک کلاس معمولی است که می تواند یک Interface را پیاده سازی کرده و یا از یک کلاس دیگر مشتق شود.

یکی از کلاسهایی که در طول برنامه شما زیاد از آن استفاده می کنید کلاس Logger است برای ثبت همه رویدادهایی که در سیستم اتفاق می افتد ما به دفعات زیاد در طول برنامه توابع آن را Call خواهیم کرد.

یا گاهی برای برخی اطلاعات پایه در برنامه ما وجود دارند که در طول اجرای برنامه زیاد از آنها استفاده می کنیم و برای هر بار استفاده آنها را از دیتابیس Fetch می کنیم. با استفاده از الگوی Singleton می توان این اطلاعات پایه را یکبار دریافت کرده و از آن در طول برنامه استفاده کرد.

نحوه پیاده سازی الگوی Singleton

  1. سازنده (constructor) کلاس را Private می کنیم تا امکان نمونه سازی از کلاس بصورت new کردن امکان پذیر نباشد.
  2. یک متغیر private و استاتیک از جنس همان کلاسی که در آن هستیم تعریف می کنیم و در واقع این متغیر تنها نسخه از کلاس را در خود نگهداری می کند.
  3. یک متد نیاز است تا تضمین کننده تولید یک نسخه از کلاس باشد این متد باید استاتیک و public باشد از از طریق کلاس های دیگر قابل دستیابی باشد.

    عملکرد این بخش که مهمترین بخش یک کلاس Singleton می باشد بسیار مهم است و باید به درستی درک شود. زمانی که GetInstance برای اولین بار Call می شود متغیر instance مقدار null دارد بنابراین شرط درون if درست بوده و متغیر instance ساخته خواهد شد. ولی زمانی که برای دفعات بعدی GetInstance صدا می شود، چون متغیر instance دیگر null نیست شرط درون if اجرا نشده و همان متغیر instance که دفعه اول ساخته شده است برگشت داده می شود. 

    یک نسخه ساده از یک کلاس Singleton اینگونه خواهد بود:

و در زبان C++ اینگونه خواهد بود:

و یک کلاس Singleton در پایتون اینگونه خواهد بود:

 

شاید دوست داشته باشید:

الگوهای طراحی برنامه نویسی – بخش اول: معرفی کلی

برخی مسائل(Problems) در طراحی نرم افزار و برنامه نویسی وجود دارند که شاید بسیاری از برنامه نویسان هر روز با آنها سر و‌ کار داریم. و گاهاً با راه حل هایی آنها را حل می کنیم. در اکثر علوم مهندسی برای مسائلی که مکررا با آن سر و کار دارند الگوهایی طراحی می کنند تا در زمان نیاز مجددا به دنبال طراحی راه حل های جدید نروند و از الگوهای موجود استفاده نمایند. بنابراین در علم مهندسی نرم افزار نیز الگوهایی وجود دارند که برای مسائلی که روزانه با آنها روبرو می شویم بهتر و لازم است به جای استفاده از روش آزمون و خطا از این الگو های دارای قابلیت استفاده مجدد استفاده کنیم. مثال معروفی که همیشه به آن اشاره می کنند این است که نباید چرخ را دوباره اختراع کنیم.

1 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *