PHP设计模式—外观模式
2021-03-12 13:28
标签:需要 ade 设计模式 this 修改 nbsp 界面 const tor 外观模式(Facade):又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 假设实现一个功能需要用到子系统中的四个方法。 如果不使用外观模式,客户端代码应该为: 这样的写法需要客户端了解子系统的具体实现方法,且代码没有解耦,如果子系统发生变化,则所有的客户端调用都需要进行相应的变化。 以下使用外观模式: 客户端调用: 结果: PHP设计模式—外观模式 标签:需要 ade 设计模式 this 修改 nbsp 界面 const tor 原文地址:https://www.cnblogs.com/woods1815/p/12827119.html定义:
代码实例:
/**
* Class SubSystemOne
*/
class SubSystemOne
{
public function methodOne()
{
return ‘子系统方法一‘ . ‘
‘;
}
}
/**
* Class SubSystemTwo
*/
class SubSystemTwo
{
public function methodTwo()
{
return ‘子系统方法二‘ . ‘
‘;
}
}
/**
* Class SubSystemThree
*/
class SubSystemThree
{
public function methodThree()
{
return ‘子系统方法三‘ . ‘
‘;
}
}
/**
* Class SubSystemFour
*/
class SubSystemFour
{
public function methodFour()
{
return ‘子系统方法四‘ . ‘
‘;
}
}$subSystemOne = new SubSystemOne();
$subSystemTwo = new SubSystemTwo();
$subSystemThree = new SubSystemThree();
$subSystemFour = new SubSystemFour();
echo $subSystemOne->methodOne();
echo $subSystemTwo->methodTwo();
echo $subSystemThree->methodThree();
echo $subSystemFour->methodFour();
新增外观类Facade.php/**
* 外观类,整合需要调用的子系统代码,给客户端调用,如果子系统发生变化,只用修改外观类代码
* Class Facade
*/
class Facade
{
/**
* @var
*/
private $subSystemOne;
/**
* @var
*/
private $subSystemTwo;
/**
* @var
*/
private $subSystemThree;
/**
* @var
*/
private $subSystemFour;
/**
* Facade constructor.
*/
public function __construct()
{
$this->subSystemOne = new SubSystemOne();
$this->subSystemTwo = new SubSystemTwo();
$this->subSystemThree = new SubSystemThree();
$this->subSystemFour = new SubSystemFour();
}
/**
* 整合方法
*/
public function method()
{
echo $this->subSystemOne->methodOne();
echo $this->subSystemTwo->methodTwo();
echo $this->subSystemThree->methodThree();
echo $this->subSystemFour->methodFour();
}
}
$facade = new Facade();
// 客户端可以不用知道子系统的存在,调用外观类中提供的方法就可以
$facade->method();
子系统方法一
子系统方法二
子系统方法三
子系统方法四
总结: