【问题标题】:When to use Facades and when to inject dependencies [closed]何时使用 Facades 以及何时注入依赖项 [关闭]
【发布时间】:2013-09-23 01:59:00
【问题描述】:

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

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

在外观设计模式上使用依赖注入的优点/缺点或仅仅是原因?

非常感谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 你会在 Facade 中包装存储库吗?
    • 就个人而言,没有。我想你可以,但它违背了依赖注入的目的。依赖注入使您的代码更具可扩展性,但也使其更易于测试。测试控制器所需要做的就是将接口的模拟注入其中,然后像往常一样运行断言。
    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2010-12-07
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多