深入 Laravel 内核之外观模式(门面模式)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入 Laravel 内核之外观模式(门面模式)相关的知识,希望对你有一定的参考价值。

门面模式核心内容:

  • 客户端与子系统的通信通过外观对象进行;
  • 外观对象封装一系列子系统的具体对应方法,对客户端只需暴露一个单一的入口方法;
  • 客户端通过访问外观对象即可调用子系统的基础方法,无需关心子系统的具体实现;
  • 可以通过引入抽象外观类解决增减子系统需要修改外观类的问题;
  • 可以通过引入外部配置文件实现外观对象与不同子系统的绑定关系;
  • 外观模式可以有效降低客户端与子系统的耦合度,客户端只与外观对象交互,不关心子系统的复杂细节;
  • 一个系统通常只需要一个外观类,一般情况下外观类为单例模式;

先定义两个子系统,子系统有各自的操作方法:

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

以上是关于深入 Laravel 内核之外观模式(门面模式)的主要内容,如果未能解决你的问题,请参考以下文章

深入理解设计模式-外观模式(门面模式)

设计模式之门面模式(外观模式)

设计模式之门面模式(外观模式)

java设计模式之外观模式(门面模式)

设计模式之外观模式(门面模式)

java设计模式之外观模式(门面模式)