ric*_*tie 5 factory dependency-injection globals
所以,这是交易.我设法在不使用全局变量或静态类/函数的情况下创建框架.
我正在使用一种使用Factory的依赖注入形式.由于框架将用于各种事情,我正在创建一个更通用的工厂,它将构建您的类,并以递归方式依赖它.
为了节省内存,每次对象被实例化时,Factory都会存储对它的引用,因此如果另一个对象具有对该对象的依赖关系,Factory将只需要返回引用.这样我们就不需要两次实例化同一个对象了.
这意味着,在许多类中,我们将对同一对象有许多不同的引用.例如,如果我声明Blog_model,Blog_controller,Blog_view,Form_validation需要Config对象,则每个实例都将使用对同一Config对象的引用进行实例化,尽管是注入.
我不熟悉单元测试或任何类型的自动测试.我刚刚发现使用全局变量和静态都很糟糕(这就是为什么我要重写我使用的框架).我想问的是,这会引入全球状态吗?它是否以任何方式妨碍测试?
----更新------
这是一个用PHP编写的MVC框架.
据我读到这个问题,您基本上创建了一个仅支持单一生活方式的依赖注入容器。
与 DI 密切相关的是生命周期管理的概念。如果我们多次请求特定类型的实例,我们每次都会得到相同的引用,还是每次都会得到一个新的实例?
如果我们每次都得到相同的实例,我们称其为单例生活方式——不要与单例设计模式混淆。
如果我们每次都会得到一个新实例,我们称之为“瞬态生活方式”。
还有其他类型的生活方式,例如范围化、池化等,但以上两种是最基本的生活方式。
在我看来,您的 DI 容器仅支持 Singleton 生活方式。这与全局状态不同,但状态在容器的单个实例中共享。然而,如果你扔掉容器实例,你也会扔掉共享状态,所以它比全局状态更容易摆脱。
归档时间: |
|
查看次数: |
250 次 |
最近记录: |