我正在尝试尽可能多地使用依赖注入,但是在涉及短期依赖等问题时我遇到了麻烦。
例如,假设我有一个博客管理器对象,它想要生成它在数据库中找到的博客列表。执行此操作的选项(据我所知)是:
- 新博客();
- $this->loader->blog();
- loader 对象创建各种其他类型的对象,如数据库对象、文本过滤器等。
- $this->blogEntryFactory->create();
但是,#1 不好,因为它会产生强耦合。#2 看起来仍然很糟糕,因为这意味着必须事先注入对象工厂——暴露它可以创建的所有其他对象。
数字 3 看起来不错,但如果我使用 #3,我是否将“新”关键字放入 blogEntryFactory 本身,或者,我是否将加载器注入 blogEntryFactory 并使用加载器?
如果我有许多不同的工厂,比如 blogEntryFactory(例如,我可以有 userFactory 和 commentFactory),那么在所有这些不同的工厂中放置“new”关键字似乎会产生依赖性问题。
我希望这是有道理的...
笔记
对于这个特定的博客示例,我已经得到了一些关于这如何不必要的答案,但事实上,在某些情况下你应该使用抽象工厂模式,这就是我要表达的观点。在这种情况下,您使用“新”,还是做其他事情?