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

Ben*_*son 6 php dependencies dependency-injection facade laravel-4

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

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

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

非常感谢

sea*_*saw 2

外观用于使与类的交互更易于阅读和使用。它使代码看起来像是您正在使用一堆静态方法与类进行交互,而实际上您是在现有对象上调用方法,而无需实例化它。

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

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