Rumah >pembangunan bahagian belakang >masalah PHP >Artikel yang meneroka perbezaan antara corak reka bentuk PHP biasa

Artikel yang meneroka perbezaan antara corak reka bentuk PHP biasa

PHPz
PHPzasal
2023-03-24 14:57:211182semak imbas

Dengan perkembangan teknologi, corak reka bentuk memainkan peranan yang semakin penting dalam pembangunan perisian. Corak reka bentuk ditakrifkan sebagai satu set penyelesaian boleh guna semula untuk masalah biasa dalam pembangunan perisian berorientasikan objek. PHP juga telah menyepadukan corak reka bentuk sejak versi 5, yang membawa kemudahan besar kepada pembangun PHP. Artikel ini akan memperkenalkan perbezaan antara corak reka bentuk PHP biasa.

1. Corak Singleton

Corak singleton ialah corak reka bentuk biasa yang memastikan bahawa hanya satu contoh kelas dicipta dan menyediakan cara untuk mengakses kaedah contoh itu . Corak tunggal dalam PHP boleh dilaksanakan dengan menggunakan pembolehubah statik. Berikut ialah contoh penggunaan mod tunggal untuk membuat sambungan pangkalan data:

class Database
{
   private static $instance;
   private $connection;

   private function __construct()
   {
       $this->connection = new mysqli('localhost', 'user', 'password', 'database');
   } 

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

       return self::$instance;
   }

   public function getConnection()
   {
       return $this->connection;
   }
}

$database = Database::getInstance();
$connection = $database->getConnection();

2 Mod kilang

Mod kilang ialah mod penciptaan yang digunakan untuk pelanggan Cipta. objek di hujungnya. Corak kilang memisahkan kod pelanggan daripada proses penciptaan objek tertentu dengan menggunakan kaedah kilang. Corak kilang dalam PHP boleh dilaksanakan menggunakan kaedah kilang abstrak, kilang mudah dan kilang. Berikut ialah contoh penggunaan kaedah kilang untuk mencipta objek:

interface Car
{
   public function run();
}

class BMW implements Car
{
   public function run()
   {
       echo "BMW is running\n";
   }
}

class Benz implements Car
{
   public function run()
   {
       echo "Benz is running\n";
   }
}

interface CarFactory
{
   public function createCar();
}

class BMWFactory implements CarFactory
{
   public function createCar()
   {
       return new BMW();
   }
}

class BenzFactory implements CarFactory
{
   public function createCar()
   {
       return new Benz();
   }
}

$bmwFactory = new BMWFactory();
$bmw = $bmwFactory->createCar();
$bmw->run();

$benzFactory = new BenzFactory();
$benz = $benzFactory->createCar();
$benz->run();

3. Corak pemerhati

Corak pemerhati ialah corak tingkah laku yang digunakan dalam objek. Hubungan pergantungan satu-ke-banyak diwujudkan antara mereka, supaya apabila keadaan objek berubah, semua objek yang bergantung padanya boleh dimaklumkan dan dikemas kini secara automatik. Corak pemerhati dalam PHP boleh dilaksanakan menggunakan kelas spl_subject dan antara muka spl_observer. Berikut ialah contoh penggunaan corak pemerhati untuk melaksanakan langganan e-mel:

class NewsPublisher implements SplSubject
{
   private $observers = [];
   private $news;

   public function attach(SplObserver $observer)
   {
       $this->observers[] = $observer;
   }

   public function detach(SplObserver $observer)
   {
       $key = array_search($observer, $this->observers, true);
       if ($key !== false) {
           unset($this->observers[$key]);
       }
   }

   public function notify()
   {
       foreach ($this->observers as $observer) {
           $observer->update($this);
       }
   }

   public function publish($news)
   {
       $this->news = $news;
       $this->notify();
   }

   public function getNews()
   {
       return $this->news;
   }
}

class MailSubscriber implements SplObserver
{
   private $email;

   public function __construct($email)
   {
       $this->email = $email;
   }

   public function update(SplSubject $subject)
   {
       echo "Mail sent to ".$this->email." with news: ".$subject->getNews()."\n";
   }
}

$publisher = new NewsPublisher();

$subscriber1 = new MailSubscriber('subscriber1@example.com');
$subscriber2 = new MailSubscriber('subscriber2@example.com');
$subscriber3 = new MailSubscriber('subscriber3@example.com');

$publisher->attach($subscriber1);
$publisher->attach($subscriber2);
$publisher->attach($subscriber3);

$publisher->publish('Breaking news!');

$publisher->detach($subscriber3);

$publisher->publish('Another breaking news!');

Di atas memperkenalkan perbezaan antara corak reka bentuk PHP yang biasa saya harap pembaca dapat lebih memahami dan menguasai aplikasi corak reka bentuk. Dalam pembangunan sebenar, corak reka bentuk harus digunakan secara fleksibel mengikut keperluan projek untuk meningkatkan kebolehgunaan semula, kebolehselenggaraan dan kebolehskalaan perisian.

Atas ialah kandungan terperinci Artikel yang meneroka perbezaan antara corak reka bentuk PHP biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn