Rumah > pembangunan bahagian belakang > tutorial php > Ketahui tentang corak fasad dalam PHP dalam satu artikel

Ketahui tentang corak fasad dalam PHP dalam satu artikel

青灯夜游
Lepaskan: 2023-04-10 11:46:01
ke hadapan
3879 orang telah melayarinya

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.

Ketahui tentang corak fasad dalam PHP dalam satu artikel

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.

Rajah dan penjelasan kelas Gof

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

Ketahui tentang corak fasad dalam PHP dalam satu artikel

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

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

Subsistem ini dibungkus melalui kelas fasad, dan hanya kaedah fasad yang ditakrifkan baru disediakan kepada dunia luar.

$facade = new Facade();
$facade->MethodA();
$facade->MethodB();
Salin selepas log masuk

Panggilan pelanggan adalah sangat mudah. ​​Kami tidak perlu mengetahui subsistem yang dipanggil secara khusus.

  • Mod fasad sangat mudah, dan selagi anda adalah rakan sebenar yang telah melakukan pembangunan dalam projek, anda mesti telah menggunakan mod ini tanpa mengetahuinya
  • Apabila anda Corak fasad sangat sesuai apabila anda perlu menyediakan antara muka yang mudah kepada subsistem yang kompleks. Pada masa yang sama, jika terdapat pergantungan yang besar antara program klien dan bahagian pelaksanaan kelas abstrak, corak fasad juga boleh diperkenalkan untuk penyahgandingan bagi meningkatkan kebebasan dan kebolehselenggaraan subsistem. Di samping itu, apabila anda perlu membina subsistem hierarki, fasad boleh berfungsi sebagai titik masuk untuk setiap lapisan subsistem
  • Saya percaya sesiapa yang telah menggunakan rangka kerja itu mesti telah menggunakan sistem fasad dalam Laravel, seperti : Cache:: put(). Dalam Laravel, fasad dilaksanakan menggunakan kaedah ajaib __callStatic(). Kemudian biarkan kaedah objek dipanggil terus menggunakan kaedah statik. Bukankah ia menakjubkan? Rakan-rakan yang berminat boleh menyemak kod sumber, iaitu di /Illuminate/Support/Facades/Facade.php.
  • Perkara utama: Struktur tiga lapisan atau MVC juga merupakan manifestasi model fasad. Seperti yang dinyatakan di atas, mod fasad sesuai untuk penyelenggaraan subsistem hierarki. Struktur tiga peringkat, MVC, MVP, dan MVVM pada asasnya semuanya untuk pelapisan, dan tujuan pelapisan adalah untuk mengurangkan kerumitan sistem.

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

Contoh

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

Ketahui tentang corak fasad dalam PHP dalam satu artikel

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 &#39;发送阿里云短信!&#39;, PHP_EOL;
    }
    public function Push()
    {
        echo &#39;推送阿里云通知!&#39;, PHP_EOL;
    }
}

class JiGuangService
{
    public function Send()
    {
        echo &#39;发送极光短信!&#39;, PHP_EOL;
    }
    public function Push()
    {
        echo &#39;推送极光通知!&#39;, PHP_EOL;
    }
}

$send = new Send();
$send->PushAndSendAliYun();
$send->PushAndSendJiGuang();
Salin selepas log masuk

Penerangan

  • Masih formula biasa ialah biasa rasa. Di sini, anda boleh bayangkan bahawa kelas perkhidmatan pihak ketiga kami semuanya adalah antara muka yang lebih lama, atau mereka sudah pun merupakan antara muka yang sangat kompleks. Pada masa ini, menggunakan corak penampilan boleh bekerjasama dengan sistem baharu dan mengurangkan kerumitan
  • Walau bagaimanapun, perlu diingatkan bahawa kelas penampilan itu sendiri mungkin menjadi punca kerumitan, tetapi mujurlah kita boleh mematuhi satu tanggungjawab. Prinsipnya ialah satu kelas penampilan boleh melakukan satu perkara

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!

Label berkaitan:
sumber:juejin.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