时间:2010-07-24 20:17:09

标签: php dependency-injection singleton

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

答案 2 :(得分:0)

答案 3 :(得分:0)

答案 4 :(得分:0)

鉴于你概述的例子,你几乎就在那里。您已经在使用工厂来实例化页面控制器,但您的页面控制器正在直接实例化用户,并且您的用户需要知道数据库。

您要做的是使用工厂来实例化您的User对象。通过这种方式,工厂可以了解数据库并可以创建知道它的用户实例。您可能最好为所有依赖项创建接口,这将有助于测试,并且意味着您的代码很好地解耦。

创建一个创建IUser实现并将其传递到PageControllerFactory的IUserFactory,然后您的ApplicationController只需要了解PageControllerFactory,它不需要知道任何有关IUserFactory或数据库的信息。

然后在您的应用程序启动时,您可以创建所有依赖项并通过构造函数将它们互相注入。