前言
菜鸟教程对外观模式的描述是:外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
代码
<?php
class Images
{
public function methodA()
{
echo '图片类中的复杂逻辑A' . PHP_EOL;
}
public function methodB()
{
echo '图片类中的复杂逻辑B' . PHP_EOL;
}
public function methodC()
{
echo '图片类中的复杂逻辑C' . PHP_EOL;
}
}
class Text
{
public function methodA()
{
echo 'Text类中的复杂逻辑A' . PHP_EOL;
}
public function methodB()
{
echo 'Text类中的复杂逻辑B' . PHP_EOL;
}
public function methodC()
{
echo 'Text类中的复杂逻辑C' . PHP_EOL;
}
}
class Facade
{
private $images;
private $text;
public function __construct()
{
$this->images = new Images();
$this->text = new Text();
}
public function methodOne()
{
$this->images->methodA();
$this->text->methodB();
}
public function methodTwo()
{
$this->images->methodA();
$this->text->methodA();
$this->images->methodC();
}
}
$facade = new Facade();
$facade->methodOne();
$facade->methodTwo();
输出
image.png
说白了外观模式就是对一个或者多个类进行封装。以降低客户端调用时候的复杂性。上述的例子表示Facade类对Images类和Text类进行了封装,客户端只需要调用Facade类。