WechatIMG34.jpeg
介紹
shiyankou:外觀模式(Facade Pattern):外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的外觀對象進行捆毫,為子系統(tǒng)中的一組接口提供一個一致的界面闪湾,外觀模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用绩卤。外觀模式又稱為門面模式途样,它是一種對象結(jié)構(gòu)型模式。使用外觀模式最大的優(yōu)點就是子系統(tǒng)與客戶端之間是松耦合的關(guān)系濒憋,客戶端不必知道具體有哪些子系統(tǒng)何暇,也無需知道他們是如何工作的,通過引入一個外觀類凛驮,提供一個客戶端間接訪問子系統(tǒng)的高級接口裆站。子系統(tǒng)和外觀類可以獨立運作,修改某一個子系統(tǒng)的內(nèi)容黔夭,不會影響到其他子系統(tǒng)宏胯,也不會影響到外觀對象。不過它的缺點就是它不夠靈活本姥,當(dāng)需要增加一個子系統(tǒng)的時候肩袍,需要修改外觀類。
角色
角色 | 說明 |
---|---|
Client | 客戶角色 |
Facade | 外觀角色婚惫,提供高級接口 |
SubSystem | 子系統(tǒng)角色氛赐,負責(zé)各自的功能實現(xiàn) |
角色示例
類名 | 擔(dān)任角色 | 說明 |
---|---|---|
Phone | Client | 手機 |
Reboot | Facade | 重啟 |
Shutdown | SubSystem | 關(guān)機 |
Boot | SubSystem | 開機 |
UML類圖
外觀模式.jpg
代碼
<?php
class Shutdown
{
public function execute()
{
return "關(guān)機".PHP_EOL;
}
}
class Boot
{
public function execute()
{
return "開機".PHP_EOL;
}
}
class Reboot
{
protected $shutdown;
protected $boot;
function __construct()
{
$this->shutdown = new Shutdown();
$this->boot = new Boot();
}
public function execute()
{
return $this->shutdown->execute().$this->boot->execute();
}
}
class Phone
{
public $reboot;
function __construct()
{
$this->reboot = new Reboot();
}
}
$phone = new Phone();
echo $phone->reboot->execute();
創(chuàng)建 Reboot.php,內(nèi)容如上先舷。
執(zhí)行
$ php Reboot.php
關(guān)機
開機