دیزاین پترن Singleton از دسته سازنده در مجموعه ۲۳ پترن مشهور Gang of Four است. یک نمونه مشترک از یک کلاس را مدیریت میکند. برای مثال تنظیمات فقطخواندنی برنامه ممکن است یک نمونه اشتراکی داشته باشد.
سناریوی واقعی در فروشگاه
در سرویس فروشگاه گاهی میخواهیم یک Registry پیکربندی در کل Process مشترک باشد.
نمونه در PHP
final class CurrencyConfig {
private static ?self $instance = null;
private function __construct(public string $currency = 'IRR') {}
public static function get(): self {
return self::$instance ??= new self();
}
}
نمونه در پایتون
class CurrencyConfig:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
چه زمانی مناسب نیست؟
حالت Global و تستنویسی دشوار از هزینههای آن است. در برنامههای مدرن معمولا Container با طول عمر مشخص شفافتر است.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.