laravel - Laravel 中的 Facade 是否实现了 Facade 或 Proxy 模式?

标签 laravel design-patterns facade proxy-pattern

据我了解,立面图案的意图是

to provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. This can be used to simplify a number of complicated object interactions into a single interface.



enter image description here

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

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

最佳答案

这本书,Architect's Guide to PHP Design Patterns 笔记,

The purpose of the Facade is to present a simpler interface to an entire sub-system composed of many objects.



在我的理解中,设计模式不是“先验”义务,而是对常见问题实现通用可重用解决方案的 promise 。

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

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

关于laravel - Laravel 中的 Facade 是否实现了 Facade 或 Proxy 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332322/

相关文章:

sql - 有 Laravel Eloquent 到 SQL 转换器吗?

javascript - 通知用户消息仍在输入中

javascript - 选择选项值时删除 div

model-view-controller - MVC 模型 1 和模型 2 有什么区别?

java - 用于隐藏 Java Web 服务的身份验证详细信息的外观

php - 使用 '->where()' 中的数组进行 Laravel 查询构建

design-patterns - 数据属性表 vs 许多小表

javascript - 处理重复任务的警报模式

java - 接收参数的 CDI 验证

design-patterns - 设计模式 - 理解外观模式