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

دسته بندی: آموزش
زمان مطالعه: 1 دقیقه
۰۷ مهر ۱۳۹۷

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

:: توجه

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

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

چه امتیازی به این مقاله می دید؟
نویسنده
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

جلسات دوره

نظرات کاربران

Mehdi Hosein pour

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

لقمان آوند

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

Mehdi Hosein pour

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

لقمان آوند

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

Mehdi Hosein pour

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

لقمان آوند

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل