深入 Laravel 内核之外观模式(门面模式)
2020-06-22 11:55 小伍2013 阅读(411) 评论(0) 编辑 收藏 举报门面模式核心内容:
- 客户端与子系统的通信通过外观对象进行;
- 外观对象封装一系列子系统的具体对应方法,对客户端只需暴露一个单一的入口方法;
- 客户端通过访问外观对象即可调用子系统的基础方法,无需关心子系统的具体实现;
- 可以通过引入抽象外观类解决增减子系统需要修改外观类的问题;
- 可以通过引入外部配置文件实现外观对象与不同子系统的绑定关系;
- 外观模式可以有效降低客户端与子系统的耦合度,客户端只与外观对象交互,不关心子系统的复杂细节;
- 一个系统通常只需要一个外观类,一般情况下外观类为单例模式;
先定义两个子系统,子系统有各自的操作方法:
class SystemA
{
public function operationA()
{
//
}
}
class SystemB
{
public function operationB()
{
//
}
}
定义一个外观类,提供单一入口,内部负责调用子系统的方法:
class Facade
{
private $systemA;
private $systemB;
public function __construct()
{
$this->systemA = new SystemA;
$this->systemB = new SystemB;
}
public function operation()
{
$this->systemA->operationA();
$this->systemB->operationB();
}
}
定义客户端,客户端只需要与外观类交互即可实现对子系统的调用:
class Client
{
public function main()
{
(new Facade)->operation();
}
}