门面模式
定义:门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口
优点
1、它对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便
2、实现了子系统与客户之间的松耦合关系
3、如果应用需要,它并不限制它们使用子系统类。因此可以在系统易用性与能用性之间加以选择
适用场景
1、为一丝复杂的子系统提供一组接口2、提高子系统的独立性
3、在层次化结构中,可以使用门面模式定义系统的每一层的接口
class Light
{
function turnOn()
{
echo '打开闪光灯<br>';
}
function turnOff()
{
echo '关闭闪光灯<br>';
}
}
class Camera
{
function active()
{
echo '打开照相机<br>';
}
function deactive()
{
echo '关闭照相机<br>';
}
}
class Facade
{
protected $light;
protected $camera;
function __construct()
{
$this->light = new Light();
$this->camera = new Camera();
}
function start()
{
$this->light->turnOn();
$this->camera->active();
}
function stop()
{
$this->light->turnOff();
$this->light->deactive();
}
}
//使用门面模式
$f = new Facade();
$f->start();
$f->stop();
//未使用门面模式
$light = new Light();
$camera = new Camera();
$light->turnOn();
$camera->active();