定義: 門面模式(有時候也稱爲外觀模式),是提供一個統一的接口去訪問多個子系統的多個不同接口,他爲子系統的一組接口提供一個統一的高層接口
按照流程寫的代碼:
<?php
//門面模式實例:打開照相機爲例
//兩部: 打開閃光燈,打開照相機
// 關閉閃光燈 ,關閉照相機
class Light
{
function turnon()
{
echo "打開閃光燈";
}
function turnoff()
{
echo "關閉閃光燈";
}
}
class Camera
{
function active()
{
echo "打開照相機";
}
function deactive()
{
echo "關閉閃光燈";
}
}
$light = new Light();
$camera = new Camera();
$light->turnon();
$camera->active();
門面模式的代碼:
<?php
//門面模式實例:打開照相機爲例
//兩部: 打開閃光燈,打開照相機
// 關閉閃光燈 ,關閉照相機
class Light
{
function turnon()
{
echo "打開閃光燈";
}
function turnoff()
{
echo "關閉閃光燈";
}
}
class Camera
{
function active()
{
echo "打開照相機";
}
function deactive()
{
echo "關閉閃光燈";
}
}
class Facade
{
protected $light;
protected $camera;
public function __construct()
{
$this->light = new Light();
$this->camera = new Camera();
}
public function start()
{
$this->light->turnon();
$this->camera->active();
}
public function stop()
{
$this->light->turnoff();
$this->camera->deactive();
}
}
$f = new Facade();
$f->start();
優點:
1.他對客戶屏蔽了子系統組件,因而減少了客戶處理對象的數目並使子系統使用起來更加方便
2.實現子系統與客戶之間鬆耦合關係
3.如果應用需要,他並不限制他們使用子系統類,因而可以在系統能用性和易用性之間加以選擇
適用場景:
1.爲一些複雜的子系統提供一組接口
2.提供子系統的獨立性
3.在層次化結構中,可以使用門面模式定義系統的每一層接口