সিঙ্গেলটোন

সিঙ্গেলটোন ডিজাইন প্যাটার্ন ক্রিয়েশনাল ডিজাইন প্যাটার্ন ক্যাটাগরির মধ্যে পরে। এই প্যাটার্নের মুল উদ্দেশ্য হল প্রতিটি ক্লাসের শুধু মাত্র একটিই ইন্সট্যান্স/অবজেক্ট থাকা।

ধরুন, Singleton নামে আমাদের একটা ফাইনাল ক্লাস আছে তাহলে সিঙ্গেলটোন প্যাটার্নে এই ক্লাসকে এমনভাবে ব্যবহার করতে হবে যেন নতুন কোন ইন্সট্যান্স/অবজেক্ট তৈরি না হয়ে একটিই থাকে আর ক্লাসটিকে ইনহেরিট ও করা না যায়, যা আমরা নিচের মত করে করতে পারিঃ

<?php  final class Singleton {  private static $instance;   public static function getInstance()  {  if (null === self::$instance) {  self::$instance = new self();  }   return self::$instance;  }   private function __construct()  {   }   private function __clone()  {   }   private function __wakeup()  {   }   public function sayHi()  {  echo 'Hi';  } }  $singleton = Singleton::getInstance();  $singleton->sayHi();

এখানে ক্লাসটি বাইরে থেকে ইন্সট্যান্সিয়েট না করে getInstance() স্ট্যাটিক মেথডটি ডিক্লেয়ার করা হয়েছে যাতে ক্লাসের ইন্সট্যান্সটা রিটার্ন করে।

অর্থাৎ,

$singleton = new Singleton();

এর পরিবর্তে

$singleton = Singleton::getInstance();

ব্যবহার করা হয়েছে।

আর ক্লাসের ইন্সট্যান্স $instance নামে ভ্যারিয়েবল এ রাখা হয়েছে।

যেমনঃ

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

আবার ক্লাসের একাধিক ইন্সস্ট্যান্স তৈরিতে বাধা দিতে আমরা __clone()__wakeup() ম্যাজিক মেথডগুলি ব্যাবহার করেছি।

এই লিঙ্ক থেকে কোডটি পাবেন।

Last updated