Skip to main content

جاده کد

الگوی طراحی Singleton در مواردی که تنها نیاز به یک نمونه از یک کلاس دارید مفید است. به عنوان مثال:

  1. مدیریت تنها یک منبع: وقتی که یک کلاس وظیفه مدیریت یک منبع یا تنها یک نمونه از یک موجودیت را دارد، الگوی Singleton می‌تواند مفید باشد. به عنوان مثال، یک کلاس برای متصل کردن به پایگاه داده و ایجاد یک ارتباط منحصر به فرد با آن.
  2. پیاده سازی الگوی Factory: وقتی که از الگوی Factory برای ایجاد شیء استفاده می‌کنید، ممکن است بخواهید فقط یک نمونه از کلاس Factory وجود داشته باشد تا هزینه ایجاد شیء بیشتر نشود. در این صورت، الگوی Singleton می‌تواند برای پیاده سازی کلاس Factory مفید باشد.
  3. تنظیمات سیستم: وقتی که تنظیمات سیستم را به صورت یک نمونه قابل دسترسی از هر جای برنامه نیاز دارید، الگوی Singleton برای ذخیره و دسترسی به این تنظیمات مفید است.

البته باید توجه داشت که استفاده از Singleton باید با دقت انجام شود، زیرا ممکن است باعث ایجاد وابستگی‌های محدود ناخواسته یا مشکلات در زمان تست و دیباگ شود.

الگوی Singleton در PHP به شکل زیر تعریف می‌شود:

				
					class Singleton {
    private static $instance;
    private $data;

    private function __construct() {
        $this->data = 'Initial data';
    }

    public static function getInstance() {
        if (!self::$instance) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }

    public function getData() {
        return $this->data;
    }

    public function setData($newData) {
        $this->data = $newData;
    }
}

// استفاده از الگوی Singleton
$singletonInstance1 = Singleton::getInstance();
echo $singletonInstance1->getData(); // Output: Initial data

$singletonInstance2 = Singleton::getInstance();
$singletonInstance2->setData('New data');

echo $singletonInstance1->getData(); // Output: New data

				
			

در این مثال، کلاس Singleton یک کلاس است که فقط یک نمونه از آن می‌تواند وجود داشته باشد. متد getInstance برای ایجاد یک نمونه از کلاس استفاده می‌شود، و اگر نمونه‌ای وجود نداشته باشد، آن را ایجاد می‌کند. سپس می‌توان با استفاده از متدهای getData و setData اطلاعات کلاس را خواند و تغییر داد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *