10

据我了解,Facade Pattern的意图是

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

在此处输入图像描述

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

但是在 Laravel 的 Facade 中,它只有一个类调用另一个(不是子系统)。对我来说,它看起来更像是一个Proxy超过Facade。有人能帮我澄清一下吗?

4

1 回答 1

1

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

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

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

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

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

于 2013-10-25T08:09:55.023 回答