Sebagai bahasa pengaturcaraan yang digunakan secara meluas, PHP boleh digunakan dengan mudah untuk melaksanakan Pengaturcaraan Berorientasikan Objek (OOP). Apabila membangun menggunakan OOP, seorang pengaturcara perlu mempunyai pemahaman yang mendalam tentang konsep corak reka bentuk. Corak reka bentuk merujuk kepada penyelesaian umum kepada jenis masalah tertentu dalam keadaan tertentu. Jadi artikel ini akan memperkenalkan beberapa corak reka bentuk biasa yang dilaksanakan menggunakan PHP.
Dalam corak tunggal, kelas hanya mempunyai satu tika. Apabila penciptaan kejadian berulang dalam beberapa kes akan menyebabkan penggunaan prestasi program, dan setiap kejadian boleh menggunakan keadaan berbeza di bawah keadaan serentak, maka mod tunggal perlu digunakan.
Berikut ialah contoh kod untuk corak tunggal:
class Singleton { private static $instance; private function __construct() {} public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new singleton(); } return self::$instance; } }
Dalam kod di atas, fungsi getInstance
akan mencipta satu tunggal dan memastikan bahawa hanya terdapat satu contoh kelas dalam permohonan itu.
Corak kilang merangkumi proses penciptaan objek dalam kelas kilang, yang memisahkan kelas kilang daripada kelas konkrit dan mengurangkan tahap gandingan. Dalam corak kilang, kelas kilang boleh mencipta contoh berbilang kategori.
Berikut ialah contoh kod corak kilang:
interface Shape { public function draw(); } class Circle implements Shape { public function draw() { echo "Circle "; } } class Rectangle implements Shape { public function draw() { echo "Rectangle "; } } class ShapeFactory { public function createShape($type) { if ($type == 'circle') { return new Circle(); } else if ($type == 'rectangle') { return new Rectangle(); } } } $shapeFactory = new ShapeFactory(); $circle = $shapeFactory->createShape('circle'); $rectangle = $shapeFactory->createShape('rectangle'); $circle->draw(); //output: Circle $rectangle->draw(); //output: Rectangle
Corak pemerhati ialah apabila objek berada diubah suai Corak yang memberitahu objek lain secara automatik. Dalam corak pemerhati, objek yang diperhatikan boleh mempunyai berbilang pemerhati Apabila keadaan berubah, pemerhati ini akan menerima pemberitahuan dan mengemas kini secara automatik.
Berikut ialah contoh kod untuk corak pemerhati:
interface Subject { public function attach(Observer $observer); public function detach(Observer $observer); public function notify(); } class ConcreteSubject implements Subject { private $observers = []; public function attach(Observer $observer) { $this->observers[] = $observer; } public function detach(Observer $observer) { $key = array_search($observer, $this->observers); if ($key !== false) { unset($this->observers[$key]); } } public function notify() { foreach ($this->observers as $observer) { $observer->update(); } } } interface Observer { public function update(); } class ConcreteObserver implements Observer { public function update() { echo "Updated! "; } } $subject = new ConcreteSubject(); $observer1 = new ConcreteObserver(); $observer2 = new ConcreteObserver(); $subject->attach($observer1); $subject->attach($observer2); $subject->notify(); //output: Updated! Updated! $subject->detach($observer2); $subject->notify(); //output: Updated!
Dalam kod di atas, Subject
dan Observer
ialah kedua-dua antara muka, terutamanya digunakan untuk membetulkan struktur corak pemerhati , ConcreteSubject
ialah kelas konkrit untuk diperhatikan, dan ConcreteObserver
ialah kelas pemerhati konkrit.
Dalam PHP, corak reka bentuk boleh digunakan dengan sangat fleksibel. Tiga corak reka bentuk di atas hanyalah beberapa contoh corak reka bentuk biasa yang dilaksanakan menggunakan PHP Pengaturcara perlu memahami secara mendalam konsep corak reka bentuk dalam pembangunan sebenar, supaya dapat memilih corak yang sesuai dan mengaplikasikannya pada program untuk menyelesaikan masalah sebenar.
Atas ialah kandungan terperinci Corak reka bentuk biasa untuk pengaturcaraan berorientasikan objek menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!