Dalam artikel sebelumnya " Perbincangan ringkas tentang mod jambatan dalam PHP " kami memperkenalkan mod jambatan dalam PHP Artikel ini akan membawa anda memahami mod fasad dalam corak reka bentuk PHP.
Mod muka depan, juga dipanggil mod penampilan. Sama ada fasad atau rupa, ia adalah medium kita kepada dunia luar, sama seperti wajah kita. Oleh itu, ciri terbesar model ini adalah untuk melakukan "tampan". Bagaimana untuk mengatakannya? Sekumpulan panggilan objek kompleks membuat saya keliru, terutamanya apabila menaik taraf dan menyelenggara sistem lama. Gunakan fasad untuk merangkum panggilan fungsi sistem lama Dari luar, ia kelihatan sama dengan sistem baru Ini adalah tujuan corak fasad.
Takrifan GoF: Menyediakan antara muka yang konsisten untuk satu set antara muka dalam subsistem Corak Fasad mentakrifkan antara muka peringkat tinggi antara muka Menjadikan subsistem ini lebih mudah digunakan.
Rajah kelas GoF
Pelaksanaan kod
class SubSystemOne { public function MethodOne() { echo '子系统方法一', PHP_EOL; } } class SubSystemTwo { public function MethodTwo() { echo '子系统方法二', PHP_EOL; } } class SubSystemThree { public function MethodThree() { echo '子系统方法三', PHP_EOL; } } class SubSystemFour { public function MethodFour() { echo '子系统方法四', PHP_EOL; } }
Tentukan empat atau N lagi subsistem. Anda boleh bayangkan bahawa terdapat banyak subsistem, dan mereka tidak semestinya sama dengan empat subsistem ini.
class Facade { private $subStytemOne; private $subStytemTwo; private $subStytemThree; private $subStytemFour; public function __construct() { $this->subSystemOne = new SubSystemOne(); $this->subSystemTwo = new SubSystemTwo(); $this->subSystemThree = new SubSystemThree(); $this->subSystemFour = new SubSystemFour(); } public function MethodA() { $this->subSystemOne->MethodOne(); $this->subSystemTwo->MethodTwo(); } public function MethodB() { $this->subSystemOne->MethodOne(); $this->subSystemTwo->MethodTwo(); $this->subSystemThree->MethodThree(); $this->subSystemFour->MethodFour(); } }
Subsistem ini dibungkus melalui kelas fasad, dan hanya kaedah fasad yang ditakrifkan baru disediakan kepada dunia luar.
$facade = new Facade(); $facade->MethodA(); $facade->MethodB();
Panggilan pelanggan adalah sangat mudah. Kami tidak perlu mengetahui subsistem yang dipanggil secara khusus.
Menjual telefon bimbit kami tidak mencukupi Menjadi syarikat perkakas rumah berteknologi tinggi seperti X Mi adalah matlamat utama kami. Walau bagaimanapun, kami tidak dapat menghasilkan begitu banyak peralatan rumah, jadi kami memutuskan untuk membina pusat beli-belah (Fasad) untuk membenarkan beberapa peniaga yang sangat berkualiti tinggi menyertai kem kami dan meletakkan produk mereka (SubSistem) di pusat membeli-belah untuk menjualnya bersama-sama. Sudah tentu, produk ini telah dipilih dengan teliti oleh kami, dan mereka pastinya yang terbaik antara yang terbaik! !
Kod penuh: https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php
Kali ini kami membungkus penghantaran mesej teks dalam dimensi penghantaran, dan membungkus antara muka mesej teks dan operator tolak yang berbeza Semasa menghantar, kami hanya perlu menggunakan penghantaran kelas Anda boleh mengawal penghantaran mesej teks atau pemberitahuan tolak menggunakan perkhidmatan pihak ketiga yang berbeza Ia sangat mudah apabila anda memikirkannya.
SMS menghantar gambar rajah kelas
Kod sumber penuh: https://github.com/zhangyue0503/designpatterns- php /blob/master/19.facade/source/facade-push.php
<?php class Send { private $aliYunService; private $jiGuangService; private $message; private $push; public function __construct() { $this->aliYunService = new AliYunService(); $this->jiGuangService = new JiGuangService(); $this->message = new MessageInfo(); $this->push = new PushInfo(); } public function PushAndSendAliYun() { $this->message->Send($this->aliYunService); $this->push->Push($this->aliYunService); } public function PushAndSendJiGuang() { $this->message->Send($this->jiGuangService); $this->push->Push($this->jiGuangService); } } class MessageInfo { public function Send($service) { $service->Send(); } } class PushInfo { public function Push($service) { $service->Push(); } } class AliYunService { public function Send() { echo '发送阿里云短信!', PHP_EOL; } public function Push() { echo '推送阿里云通知!', PHP_EOL; } } class JiGuangService { public function Send() { echo '发送极光短信!', PHP_EOL; } public function Push() { echo '推送极光通知!', PHP_EOL; } } $send = new Send(); $send->PushAndSendAliYun(); $send->PushAndSendJiGuang();
Penerangan
Alamat asal: https://juejin.cn/post/6844903988085653518
Pengarang: Pengurus Projek Tegar
mengesyorkan pembelajaran: "Tutorial Video PHP"
Atas ialah kandungan terperinci Ketahui tentang corak fasad dalam PHP dalam satu artikel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!