TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 610 subscribers
Post #69 181
#design_patterns
یکی از معروف ترین و ساده ترین دیزان پترن ها Singleton هست.
دیزان پترن Singleton برای ایجاد یک کلاسی استفاده می‌شود که تنها یک نمونه از آن در سراسر برنامه وجود دارد. این الگو برای اطمینان از اینکه تمام اجزای برنامه از یک نمونه واحد استفاده می‌کنند، مفید است.

ساختارش به این صورت هست:
class DatabaseConnection {
private static $instance;
private function __construct() {
echo "database connected";
}

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

در مثال بالا یک کلاس برای اتصال به دیتابیس داریم.

این کلاس دارای یک پراپرتی instance هست که یا null است یا حاوی یک نمونه از کلاس، و یک متد getInstance.

زمانی که متد getInstance فراخوانی شود چک می کند که آیا از قبل نمونه ایی از کلاس ساخته شده یا خیر، این کار را با بررسی مقدار پراپرتی instance انجام می دهد که آیا null هست یا حاوی یک نمونه از کلاس.

در صورتی که نمونه ساخته نشده باشد(پراپرتی instance برابر null باشد) یک نمونه جدید می سازد و در صورتی که از قبل نمونه وجود داشته باشد(پراپرتی instance برابر نمونه ایی از کلاس باشد) همان نمونه قبلی را استفاده می کند.

با استفاده از این دیزاین پترن درصورتی که صد ها بار هم از کلاس DatabaseConnection نمونه بسازید فقط و فقط یک بار ساخته می شود.
DatabaseConnection::getInstance();
DatabaseConnection::getInstance();
DatabaseConnection::getInstance();
DatabaseConnection::getInstance();

Result:
database connected
.
  • ❤ 3
  • 👍 1
More from @amirhdeveloper
  1. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  2. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  3. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  4. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  5. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  6. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →