答案 0 :(得分:4)
答案 1 :(得分:2)
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
鉴于你概述的例子,你几乎就在那里。您已经在使用工厂来实例化页面控制器,但您的页面控制器正在直接实例化用户,并且您的用户需要知道数据库。
您要做的是使用工厂来实例化您的User对象。通过这种方式,工厂可以了解数据库并可以创建知道它的用户实例。您可能最好为所有依赖项创建接口,这将有助于测试,并且意味着您的代码很好地解耦。
创建一个创建IUser实现并将其传递到PageControllerFactory的IUserFactory,然后您的ApplicationController只需要了解PageControllerFactory,它不需要知道任何有关IUserFactory或数据库的信息。
然后在您的应用程序启动时,您可以创建所有依赖项并通过构造函数将它们互相注入。