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