الگوی singleton یک الگوی طراحی در مهندسی نرمافزار است. این الگو ایجاد شیء از یک کلاس را محدود میسازد. این الگو زمانی مفید است که در سرتاسر سیستم تنها به یک نمونه از آن کلاس نیاز باشد. این مفهوم عموماً به سیستمهایی که با یک یا تعداد محدودی نمونه بهینهتر کار میکنند، نیز تعمیم داده میشود. واژهٔ آن از مفهوم ریاضی singleton برگرفته شده است.
انتقادهایی به استفاده از الگوی singleton وجود دارد. برخی آن را یک ضدالگو تلقی میکنند، زیرا بیش از حد استفاده میشود، محدودیتهای نابجایی را زمانی که تنها یک نمونه از کلاس لزوماً مورد نیاز نیست، به وجود میآورد و حالت سراسری را به یک برنامه القا میکند. فریمورکها و سیستمعاملهایی مانند اندروید زمانی که نیازمند تخصیص حافظه به برنامهای دیگر باشند، به صورت غیرمنتظره اقدام به زباله روبی اشیاء singleton میکنند.
به موارد زیر توجه کنید :
الگوهای کارخانهٔ انتزاعی، سازنده و نمونهٔ اولیه میتوانند در پیادهسازی های خود از الگوی singleton استفاده کنند.
اشیاء نماد خارجی معمولاً singleton هستند زیرا تنها یک شئ نما خارجی مورد نیاز است.
اشیاء حالت معمولاً singletonاند.
اشیاء singleton معمولاً نسبت به متغیرهای سراسری ترجیح داده میشوند، زیرا:فضای نام سراسری را با متغیرهای اضافی آلوده نمیکنند.
اجازه تخصیص و ایجاد اشیاء به صورت تنبل را میدهند، درحالیکه متغیرهای سراسری در بسیاری از زبانها از همان ابتدای برنامه شروع به گرفتن منابع میکنند.
پیادهسازی الگوی singleton باید قواعد تک شئ بودن و دسترسی سراسری را به ارمغان بیاورد. این دسترسی نیازمند یک ساز و کار برای دسترسی به عضو singletonٔ کلاس بدون ایجاد یک شیء از آن کلاس است. نحوه پیادهسازی به این گونه است که کلاس باید یک متد داشته باشد تا یک شیء از همان کلاس را در صورتی که قبلاً ساخته نشده است، برگرداند. برای اطمینان از اینکه نمونهٔ دیگری از این کلاس قابل ایجاد نیست باید دسترسی به constructor کلاس خصوصی باشد. به تفاوت بین یک نمونهٔ ایستا از کلاس و نمونه singleton توجه کنید: گرچه نمونه singleton میتواند از طریق ایجاد یک نمونه ایستا پیادهسازی شود ولی میتواند تا زمانی که نیازی به آن پیدا نشده، ساخته نشود و منابع را مصرف نکند. پیادهسازی الگوی singleton در برنامههایی که قابلیت چند ریسهای دارند نیازمند دقت بیشتری است. اگر دو ریسه همزمان وارد متد مربوط به درخواست شئ singleton شوند و شئ singleton هنوز ایجاد نشده باشد، تنها یکی از آن دو ریسه باید شئ را ایجاد کند. راه حل این مسئله استفاده از انحصار متقابل در هنگام ایجاد شئ singleton است.
به طور خلاصه این Design Pattern برای مواقعی کاربرد دارد که مثلا بخواهیم فقط یک شی از کلاس php ساخته شود و بیشتر از یک شی نتوان از کلاس ساخت و از آن جلوگیری شود.
طراحی اپلیکیشن ios | طراحی نرم افزار ios | طراحی vod | طراحی اپلیکیشن آموزش مجازی | طراحی اپلیکیشن اپل | طراحی اپلیکیشن آیفون | طراحی اپلیکیشن آیپد |
کنترل سرویس مدرسه | طرحی اپلیکیشن دیوار | طراحی اپلیکیشن واقعیت افزوده | طراحی اپلیکیشن شیپور | طراحی شبکه اجتماعی | طراحی پیام رسان | طراحی اپلیکیشن خدماتی | طراحی اپلیکیشن بانک شهر | طراحی موبایل اپلیکیشن | طراحی گرافیکی وب | مکان یاب سرویس مدرسه | کمسیون ماده 18 آموزش پرورش |
سامانه رهگیری سرویس مدارس | طراحی اپلیکیشن رستوران | طراحی اپلیکیشن گردشگری | بلاک چین |
طراحی وب سایت | طراحی اپلیکیشن اندروید | طراحی اپلیکیشن موبایل | طراحی اپلیکیشن تلفن همراه | طراحی نرم افزار الو پیک | طراحی اپلیکیشن مذهبی | طراحی اپلیکیشن اسنپ | طراحی نرم افزار تجاری | طراحی نرم افزار فروشگاهی | طراحی اپلیکیشن اسنپ | طراحی اپلیکیشن ریحون | طراحی اپلیکیشن ردیاب | طراحی سایت | طراحی اپلیکیشن آیفون | طراحی وب | سیستم مدیریت محتوای پاراکس | پاراکس | طراحی نرم افزار اول مارکت | طراحی اپلیکیشن کافه بازار | نرم افزار گوگل پلی | متریال دیزاین | تولید بازی | طراحی گیم اپلیکیشن | طراحی بازی اندروید | گیم سنتر | گیم استور | اینترنت اشیا | اسمارت سیتی | بهینه سازی سایت | واقعیت افزوده | اینترنت چیزها | طراحی اپلیکیشن فروشگاهی