仍然掌握良好的依赖注入技术与矫枉过正。想法赞赏。
我有一个应用程序,它在启动时会从文件中读取设置。以后可能是数据库,我已经编写了以依赖注入(Guice)方式加载设置的部分,这不是问题。这些设置不会因应用程序的正常使用而改变,但在未来的版本中,我可能希望允许用户从 GUI 更改这些设置。
这是实际的问题:我应该如何让代码的各个部分访问这些设置?一些设置只在对象层次结构中非常重要,但父对象不需要知道它们。所以,我可以:
- 使用单例,然后在构造函数中查找适当的设置
- 将不同的设置(或整个设置类)向下传递到对象树
- 创建由 Guice 模块加载的工厂,然后使用
Factory.get()
我不确定#3 比#1 好多少……还是完全有更好的方法?
注意:当我使用 Guice 时,这更像是一个架构问题,而不是“我如何使用 XXX 框架”问题。因此,即使您不认识 Guice,也不要害怕回答。