joh*_*ack 8 php design-patterns dependency-injection abstract-factory
我试图尽可能多地使用依赖注入,但是当涉及短期依赖项等问题时我遇到了麻烦.
例如,假设我有一个博客管理器对象,希望生成它在数据库中找到的博客列表.这样做的选项(据我所知)是:
但是,#1很糟糕,因为它会产生强耦合.#2仍然看起来很糟糕,因为这意味着必须事先注入对象工厂 - 暴露它可以创建的所有其他对象.
3号似乎没问题,但如果我使用#3,我是否将"new"关键字放在blogEntryFactory本身中,或者,我是否将加载器注入blogEntryFactory并使用加载器?
如果我有许多不同的工厂,比如blogEntryFactory(例如我可以拥有userFactory和commentFactory),那么在所有这些不同的工厂中放置"new"关键字就会产生依赖性问题.
我希望这是有道理的...
注意
我已经得到了一些关于这个特定博客示例如何不必要的答案,但事实上,你应该使用抽象工厂模式的情况,这就是我得到的观点.你是在这种情况下使用"新"还是做其他事情?
我不是专家,但我会尝试一下。这假设它Blog只是一个数据模型对象,充当某些数据的容器并由控制器填充(new Blog不是很有意义)。在这种情况下,Blog是对象图的叶子,使用new就可以了。如果您要测试需要创建 a 的方法Blog,则必须同时测试 a 的创建Blog,并且使用模拟对象没有意义.. aBlog在该方法之后不会持续存在。
举个例子,假设 PHP 没有数组结构,但有一个集合对象。您会打电话$this->collectionsFactory->create()还是满意地说new Array;?