何时使用Facades以及何时注入依赖项

时间:2013-09-18 10:40:35

标签: php dependency-injection dependencies laravel-4 facade

我目前正在使用Laravel-4在php中构建一个Web应用程序,但是,我怀疑这个问题也适用于其他语言和框架。

我已阅读有关依赖注入和Facades的信息,并了解每种情况下的必要编码。我不清楚的是你何时应该使用一个而不是另一个?

使用依赖注入优于Facade设计模式的优点/缺点或原因是什么?

非常感谢

1 个答案:

答案 0 :(得分:2)

Facade用于使类与类的交互更易于阅读和使用。它使得代码看起来你正在使用一堆静态方法与类进行交互而不实例化它,而实际上你在现有对象上调用方法。

依赖注入用于顾名思义,将类的依赖项注入类中。这是通过构造函数完成的。您将类注入另一个类以允许该类使用注入的类中的功能。当您开始将接口注入类时,这将变得非常强大。然后,您可以基于接口创建一个类并将其注入到类中。这样,如果需要更改注入类的工作方式,可以根据接口创建一个新类并将其注入。由于您的代码基于注入的接口,因此它将确保接收到的注入类将继续工作而无需更改。

如果您创建一个基于Eloquent引擎接口的存储库,这在Laravel 4中最为显着。您可以将该存储库注入控制器并使用界面上的方法来获取所需的信息。那么如果你想切换到类似Redis的东西,你所要做的就是根据使用Redis引擎的接口创建一个新类,然后注入该类。控制器永远不需要更改。