-
概念
门面模式(facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用;引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦合度。
-
作用
- 为一些复杂的子系统提供一组接口。
- 提高子系统的独立性
- 在层次化结构中,可以使用门面模式定义系统的每一层的接口
-
优点
- 它对于客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
- 实现了子系统与客户之间的松耦合关系。
- 如果应用需要,它并不限制它们使用子系统类。因此可以在系统易用性与能用性之间加以选择。
<?php
class Camera
{
public function turnOn()
{
echo 'turn on camera';
}
public function turnOff()
{
echo 'turn off camera';
}
}
class Light
{
public function turnOn()
{
echo 'turn on light';
}
public function turnOff()
{
echo 'turn off light';
}
}
//门面类
class Facade
{
private $camera;
private $light;
public function __construct()
{
$this->camera = new Camera();
$this->light = new Light();
}
//启动接口
public function activate()
{
$this->camera->turnOn();
$this->light->turnOn();
}
//关闭接口
public function deactivate()
{
$this->camera->turnOff();
$this->light->turnOff();
}
}
//客户端
class Client
{
private static $securit;
public static function main()
{
self::$securit = new Facade();
self::$securit->activate();
self::$securit->deactivate();
}
}
Client::main();