门面模式

Mar 24, 2022  │  #php   #%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F  
  1. 概念

    门面模式(facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用;引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦合度。

  2. 作用

    • 为一些复杂的子系统提供一组接口。
    • 提高子系统的独立性
    • 在层次化结构中,可以使用门面模式定义系统的每一层的接口
  3. 优点

<?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();