据我所知,如何处理应用程序范围的角色扮演器对象(如根模型对象)(在MVC上下文中)有两个主要原则:
第一种方法似乎更清晰,因为依赖关系更容易看到,但还有很多额外的工作要做(参数,类变量......)。
你更喜欢什么?
编辑:第一种技术也只使用一个实例,但它是通过传递对象而不是通过静态函数提供的
答案 0 :(得分:2)
我更喜欢运行单身人士的方法getInstance()
作为构造函数参数 - 一石二鸟;)
答案 1 :(得分:1)
我认为传递参数更有效,更容易调试,但还需要一些额外的工作。
我更喜欢在我真正需要它时使用单身(如数据库会话,写入文件等)。
这实际上取决于项目类型,语言,预算,项目规模等。没有“普遍”的答案。
答案 2 :(得分:1)
这是依赖注入可以帮助的地方。必须在创建对象时手动将所有正确的依赖项手动传递给对象,这可能会很麻烦,并且可能有些容易出错。一个合适的依赖注入容器可以帮助自动化这个过程,实际上比单例更容易使用。
Symfony2框架是一个现代的例子: