1.7. Singleton¶
1.7.1. تعریف¶
الگوی طراحی Singleton یک الگوی طراحی از نوع سازنده یا Creational محسوب میشه که هدفش اطمینان از اینه که یک کلاس فقط و فقط یک شی داشته باشه و یک راه دسترسی global هم براش در نظر بگیره.
زمانی که این الگو روی یک کلاس اجرا میشه، اون کلاس فقط یک شی ثابت رو برمیگردونه.
در الگوی طراحی Singleton، سازنده ی کلاس به صورت private در نظر گرفته میشه تا امکان ایجاد شی به صورت مستقیم گرفته بشه و به جای اون یک متد public در نظر میگیریم تا عملیات return کردن شی از کلاس رو انجام بده.
1.7.2. اجزاء¶
الگوی طراحی Singleton از چند بخش اصلی تشکیل میشه:
Singleton class
Private constructor
Static instance variable
Static getInstance() method
Hpesoj00, CC BY-SA 4.0, via Wikimedia Commons
1.7.3. چه زمانی استفاده میشه؟¶
این الگو زمانی استفاده میشه که مطمئن هستیم از کلاس مورد نظر ما در تمام برنامه فقط و فقط باید یک شی ساخته و از اون استفاده بشه.
به عنوان مثال در کل برنامه ما فقط به یک کانکشن دیتابیس واحد نیاز داریم یا در فریمورک های MVC فقط یک شی از کلاس اصلی برنامه ایجاد میشه.
1.7.4. پیاده سازی¶
کلاس Singleton به این صورت تعریف میشه:
1<?php
2
3class Singleton
4{
5 private static ?Singleton $instance = null;
6
7 private function __construct()
8 {
9 // Private constructor to prevent creating new instances of the Singleton class
10 }
11
12 public static function getInstance(): Singleton
13 {
14 if (self::$instance === null) {
15 self::$instance = new self();
16 }
17
18 return self::$instance;
19 }
20
21 public function doSomething(): void
22 {
23 echo "I am doing something!";
24 }
25}
1.7.5. نحوه فراخوانی¶
1<?php
2
3$singleton = Singleton::getInstance();
4$singleton->doSomething(); // outputs "I am doing something!"
به همین سادگی!