Artikel yang meneroka perbezaan antara corak reka bentuk PHP biasa

PHPz
Lepaskan: 2023-03-24 15:20:02
asal
1160 orang telah melayarinya

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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!');
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan