دوره مفاهیم شی گرایی (فصل 3 - جلسه 2) : الگوی طراحی Singleton (سینگلتون)



visibility  
mode_comment   ۶

اولین الگوی طراحی که در موردش صحبت می کنیم الگوی طراحی سینگلتون هست. در این الگو قراره مطمئن شیم که از کلاسی که تعریف می کنیم حداکثر یک شی ساخته بشه و همواره از همون استفاده بشه. می تونید در ادامه جزئیات رو در این جلسه ببینید :

info توجه

این مطلب یک جلسه از دوره مفاهیم شی گرایی می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره مفاهیم شی گرایی

comment دیدگاه کاربران

مزیت این که بیایم از اون کلاس به صورت سینگلتون استفاده کنیم نسبت به تعریف کردن همه متدها به صورت استاتیک چیه؟

لقمان آوند

اینکه یه کلاس که سینگلتون هست با یه کلاس که همه چیزشو استاتیک در نظر می گیریم حداقل تفاوتش اینه که اون کلاس سینگلتون می تونه اینترفیس ها رو پیاده سازی کنه و یا اینکه متدهاشو از جای دیگه به ارث ببره. ولی وقتی همه چیزو بخوای استاتیک ببینی ممکنه نتونی از این قابلیت بهره ببری مگه اینکه بگی کلاس پدر و یا اینترفیس هم همه استاتیک هستند که جالب نیست این شرایط. با سینگلتون می تونی شی ساخته شده رو از کلاس های پدرش ایجاد کنی (پلی مورفیسم).
شما از کلاس سینگلتون یک شی میسازی و با اون کار می کنی ولی تو حالتی که گفتی نمونه سازی نداریم و با اسم کلاس فقط کار می کنیم.

اینطوری که من از صحبت هاتون متوجه شدم پس هرچه قدر که بتونیم بیشتر به صورت استاتیک یا (سینگلتون) از کلاس استفاده کنیم از نظر مدیریت حافظه بهتر هستش.

لقمان آوند

اینکه مطمئن شی فقط یه آبجکت ساخته شده طبیعتا هواست به حافظه بوده و بهتره. ولی همیشه و همه جا نمیشه از استاتیک ها استفاده کرد. باید جاشو تشخیص بدی و سر جای خودش استفاده کنی …

استاد آوند من فیلم های سایت lynda.com رو که می دیدم در مورد singleton می گفتند که بهتره همیشه به جاش از الگوی dependancy injection استفاده بشه به دلیل اینکه کلاس هایی که کانستراکتور خصوصی دارند تقریبا unit testing باهاشون غیر ممکنه ، خیلی سخت میشه اونها رو extend کرد یا متد هاشو جای دیگه override کرد یا اون کلاس رو mock کرد (که دقیقا این مورد رو نمیدونم یعنی چی).

لقمان آوند

بله این مورد درست هست و فکر می کنم در ویدیو هم گفتم بعضی ها این الگو رو مناسب نمی دونن. موردی که می گید وجود داره و اگر چنین شرایطی در برنامه تون دارید احتمالا بهتره الگوی سینگلتون رو استفاده نکنید.
mocking رو میشه اینجوری تعریف کرد که شما آبجکت هایی رو می سازید که شبیه سازی می کنن رفتار آبجکت های واقعی رو در حین اجرای برنامه. این مورد بیشتر در همون unit testing استفاده میشه.

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.