据我了解,立面图案的意图是
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.
据我了解,该模式的目标是隐藏子系统中的复杂性(例如,您的外观类在子系统中调用 许多对象 )。
但是在 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/