php设计之初用于什么,PHP设计模式(七)之门面模式
一、什么是外觀模式(Facade Pattern)
定義:外觀模式又稱門面模式,提供一個統一的接口,用來訪問子系統中的一群接口。
外部與子系統之間的通信采用門面(Facade)對象來完成。
【舉例】比如麥當勞套餐,套餐包含雞肉卷、漢堡包、可樂等N個單個食物(這就是子系統),而套餐就是門面對象。當我們去點一個套餐時,套餐內的食物(子系統)不會一個一個給你送來,而是等套餐內所有食物做好之后一起送給你。有沒有發現,這與工廠模式有些相像。
二、為什么使用外面模式
主要用來簡化操作。
三、外觀模式結構
外觀角色(Facade): 為子系統封裝統一的對外接口,如同子系統的一個門面。這個類一般不負責具體的業務邏輯,只是一個委托類,具體的業務邏輯由子系統完成。
子系統(SubSystem): 由多個類組成的具有某一特定功能的子系統。可以是第三方庫,也可以是自己的基礎庫,還可能是一個子服務,為整個系統提供特定的功能或服務。
四、實例解釋
繼續一貫以來的餐飲。廚房電器擺放位置太亂,嚴重影響了廚房的整潔,老板決定整改整個電路系統。廚房電器太多,一個一個關掉電源太過于浪費時間,有沒有總控?對,總控。于是老板直接關掉了整個廚房的電源系統,這下就方便多了。實際常見的有屋子里的空氣開關。
五、代碼實現
Freezer.php<?php
/**
*?Freezer?冷藏柜開關?(子系統)
*
*/
class?Freezer
{
//?冷藏柜電源?開
public?function?open()
{
echo?'我是冷藏柜,我接通電源了,開始冷藏工作~~';
}
//?冷藏柜電源?關
public?function?close()
{
echo?'我是冷藏柜,我失去電源了,冷藏工作結束~~';
}
}
SteamRiceMachineSwitch.php<?php
/**
*?SteamRiceMachineSwitch?蒸飯車電源開關控制器?(子系統)
*
*/
class?SteamRiceMachineSwitch
{
//?蒸飯車電源?開
public?function?turnOn()
{
echo?'我是蒸飯車,我接通電源了,我將為你蒸飯~';
}
//?蒸飯車電源?關
public?function?turnOff()
{
echo?'我是蒸飯車,我接通關閉了,我不再為你蒸飯,你自己想辦法去吧~';
}
}
TurnOffFacade.php<?php
/**
*?TurnOffFacade?電源總開關門面
*/
class?TurnOffFacade
{
protected?$freezer;
protected?$steamRiceMachineSwitch;
public?function?__construct()
{
$this->freezer?=?new?Freezer();
$this->steamRiceMachineSwitch?=?new?SteamRiceMachineSwitch();
}
//?總開
public?function?on()
{
$this->freezer->open();
$this->steamRiceMachineSwitch->turnOn();
}
//?總關
public?function?off()
{
$this->freezer->close();
$this->steamRiceMachineSwitch->turnOff();
}
}
index.php<?php
require_once?'./Freezer.php';
require_once?'./SteamRiceMachineSwitch.php';
require_once?'./TurnOffFacade.php';
$facade?=?new?TurnOffFacade();
$facade->on();
$facade->off();
我是夕陽何處尋,期待和優秀的你一起同行!
夕陽何處尋
2020年01月16日
轉載:感謝您對自如初博客網站的認可,所有文章均屬原創文章,技術類文章轉載請注明出處,“自如初博客”;文學類文章請帶文本鏈接地址,否則視為侵權!
很贊哦!(6)
總結
以上是生活随笔為你收集整理的php设计之初用于什么,PHP设计模式(七)之门面模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 手机编程termux_如何
- 下一篇: oracle is ref cursor