- تضمین میکند که کلاس تنها یک نمونه داشته باشد و دسترسی سراسری برای آن فراهم میکند.
- هر گاه بخواهیم مطمئن شویم که فقط یک نمونه از کلاس میتواند وجود داشته باشد، و دسترسی سراسری به آن داشته باشیم، از این الگو استفاده میکنیم. (زمانی که تنها یک نمونه از کلاس لازم یا نیاز است)
- زمانی که کنترل دسترسی به تنها یک شیء لازم است.
- کانستراکتور کلاس را پرایویت میکنیم تا کسی نتواند آن کلاس را خارج از کلاس new کند.
- داخل کلاس یک متود استاتیک تعریف میکنیم و تنها یک نمونه از کلاس تولید میکنیم. اگر قبلاً یک نمونه تولید شده بود، همان نمونهٔ قبلی را برمیگردانیم.
میتوانیم نمونهسازی کلاس سینگلتون را تا زمان اولین دسترسی به تأخیر بیاندازیم. اطلاعات بیشتر: lazy initialization
- Singleton in multi-threaded environment
- باید این الگو را طوری به کار ببریم که thread safe باشد.
در محیطهای چند نخی، گرفتن و آزاد کردن lock خیلی هزینهبر است و ممکن است تعداد این درخواستها خیلی خیلی زیاد شود. برای کاهش سربار lock میتوان پس از اینکه فلگ را چک کردیم lock کنیم تا سربار کاهش یابد.
- Double-checked locking
- Double-checked locking and the Singleton pattern
- The "Double-Checked Locking is Broken" Declaration
- تا زمانی که سازندهٔ کلاس سینگلتون خصوصیست، اشتقاق و زیرکلاسسازی امکان ناپذیر است.
- java.lang.Runtime#getRuntime()
- java.awt.Desktop#getDesktop()