یکی از معروف ترین و ساده ترین دیزان پترن ها
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();Result:
DatabaseConnection::getInstance();
DatabaseConnection::getInstance();
DatabaseConnection::getInstance();
database connected
.