据我所知, Facade Pattern 的意图是
为子系统中的接口提供统一界面。 Facade定义了一个更高级别的界面,使子系统更易于使用。这可以用于将大量复杂的对象交互简化为单个界面。
根据我的理解,该模式的目标是隐藏子系统的复杂性(例如,您在Facade类中调用子系统中的许多对象)。
但是在Laravel的Facade中,只有一个类调用另一个类(不是子系统)。对我来说,它看起来更像是Proxy
而不是Facade
。有人可以帮我澄清这一点。
答案 0 :(得分:1)
“PHP设计模式的架构师指南”一书指出:“Facade的目的是为由许多对象组成的整个子系统提供一个更简单的接口”。
根据我的理解,设计模式不是“先验”义务,而是承诺为常见问题实施通用的可重用解决方案。 Laravel 4利用Facade设计模式,它允许它通过静态API提供富有表现力的语法,但仍然可以在幕后进行测试。Facade隐藏了代码的复杂性/实现。事实上,Laravel的Facades实现单个对象,我们不应忽视Laravel的App Facade(一个IoC容器)封装整个应用程序。
代理模式拦截请求并执行额外的工作,例如:过滤,ACL,转换......“消费者”对象幸福地不知道代理层提供的额外工作。