Laravel的Facade是否实现了Facade或Proxy Pattern?

Rez*_*ned 10 facade laravel

据我所知,Facade Pattern的意图是

提供一个统一的接口组接口在一个子系统.Facade定义了一个更高级别的接口,使子系统更易于使用.这可以用于将许多复杂的对象交互简化为单个界面.

在此输入图像描述

根据我的理解,模式的目标是隐藏子系统中的复杂性(例如,您的外观类调用子系统中的许多对象).

但是在Laravel的Facade中,它只有一个类调用另一个(不是子系统).对我来说,它看起来更像是一个Proxy超过Facade.有人可以帮我澄清这一点.

小智 2

《PHP 设计模式架构师指南》一书指出,

Facade 的目的是为由许多对象组成的整个子系统提供一个更简单的接口。

据我了解,设计模式不是“先验”义务,而是对常见问题实施通用可重用解决方案的承诺。

Laravel 4 利用了 Facade 设计模式,它允许它通过静态 API 提供富有表现力的语法,但仍然保持其可测试性。外观隐藏了代码的复杂性/实现。事实上,Laravel 的Facades实现了单个对象。我们不应该忽视 Laravel 的 App Facade(一个 IoC 容器)封装了整个应用程序。

代理模式拦截请求并执行额外的工作,例如:过滤、ACL、转换……“消费者”对象完全不知道代理层提供的额外工作。