门面模式

  1. 概念

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

  2. 作用

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

  • 它对于客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
  • 实现了子系统与客户之间的松耦合关系。
  • 如果应用需要,它并不限制它们使用子系统类。因此可以在系统易用性与能用性之间加以选择。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?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();