ویرگول
ورودثبت نام
حمیده دلیری
حمیده دلیری
حمیده دلیری
حمیده دلیری
خواندن ۱ دقیقه·۹ ماه پیش

1- Design Patterns (الگوهای طراحی): Singleton Pattern


۱. Singleton Pattern – تک‌نمونه

📌 هدف: این الگو تضمین می‌کند که از یک کلاس فقط یک نمونه (Instance) در کل برنامه وجود داشته باشد و همه بخش‌های برنامه از همان نمونه استفاده کنند.

📌 چه زمانی از Singleton استفاده کنیم؟

✅ زمانی که باید فقط یک شیء از یک کلاس در کل برنامه وجود داشته باشد.
✅ برای مدیریت منابعی مثل اتصال به دیتابیس، لاگ‌گیری، تنظیمات برنامه و …
✅ وقتی می‌خواهیم دسترسی جهانی (Global Access) به یک شیء داشته باشیم.

🛠 پیاده‌سازی Singleton در PHP

class Singleton { private static ?Singleton $instance = null; // متغیر استاتیک برای ذخیره نمونه کلاس private function __construct() {} // جلوگیری از ایجاد نمونه جدید private function __clone() {} // جلوگیری از کلون کردن شیء private function __wakeup() {} // جلوگیری از unserialize شدن public static function getInstance(): Singleton { if (self::$instance === null) { self::$instance = new Singleton(); } return self::$instance; } } // استفاده از Singleton $object1 = Singleton::getInstance(); $object2 = Singleton::getInstance(); var_dump($object1 === $object2); // خروجی: true

🔹 در این کد، هر بار که getInstance() را صدا بزنیم، همان نمونه قبلی برمی‌گردد و نمی‌توان نمونه جدیدی ایجاد کرد.

📌 مزایا و معایب Singleton

✅ مزایا:

  • جلوگیری از ایجاد چندین نمونه غیرضروری از یک کلاس.
  • مدیریت بهتر منابع (مثلاً اتصال به دیتابیس).
  • دسترسی سراسری (Global Access) به یک شیء واحد.

❌ معایب:

  • وابستگی زیاد به یک شیء واحد ممکن است تست‌نویسی (Unit Testing) را سخت کند.
  • اگر نادرست استفاده شود، می‌تواند برنامه را به یک ساختار وابسته به وضعیت (Stateful) تبدیل کند.
الگوهای طراحیsingleton
۰
۰
حمیده دلیری
حمیده دلیری
شاید از این پست‌ها خوشتان بیاید