门面模式 php
//门面模式 (Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦
class Camera{
public function turnOn(){
var_dump("开");
}
public function turnOff(){
var_dump("关");
}
public function rotate($degrees){}
}
class Light{
public function turnOn(){
var_dump("开");
}
public function turnOff(){
var_dump("关");
}
public function changeBulb(){}
}
class Sensor{
public function activate(){}
// diːˈæktɪveɪt 停用
public function deactivate(){}
public function trigger(){}
}
class Alarm{
public function activate(){}
public function deactivate(){}
public function ring(){}
public function stopRing(){}
}
class SecurityFacade{
private $camera1, $camera2;
private $light1, $light2, $light3;
private $sensor;
private $alarm;
public function __construct()
{
$this->camera1 = new Camera();
$this->camera2 = new Camera();
$this->light1 = new Light();
$this->light2 = new Light();
$this->light3 = new Light();
$this->sensor = new Sensor();
$this->alarm = new Alarm();
}
public function activate() {
$this->camera1->turnOn();
$this->camera2->turnOn();
$this->light1->turnOn();
$this->light2->turnOn();
$this->light3->turnOn();
$this->alarm->activate();
$this->alarm->activate();
}
public function deactivate() {
$this->camera1->turnOff();
$this->camera2->turnOff();
$this->light1->turnOff();
$this->light2->turnOff();
$this->light3->turnOff();
$this->alarm->deactivate();
$this->alarm->deactivate();
}
}
$securityObj = new SecurityFacade();
$securityObj->activate();
$securityObj->deactivate();
//string(3) "开"
//string(3) "开"
//string(3) "开"
//string(3) "开"
//string(3) "开"
//string(3) "关"
//string(3) "关"
//string(3) "关"
//string(3) "关"
//string(3) "关"