加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 抽象工厂使用“新”吗?

发布时间:2020-12-13 13:17:49 所属栏目:PHP教程 来源:网络整理
导读:我试图尽可能多地使用依赖注入,但是当遇到短期依赖等问题时我遇到了麻烦. 例如,假设我有一个博客管理器对象,希望生成它在数据库中找到的博客列表.这样做的选项(据我所知)是: 新博客(); $this- loader- blog(); loader对象创建各种其他类型的对象,如数据库对
我试图尽可能多地使用依赖注入,但是当遇到短期依赖等问题时我遇到了麻烦.

例如,假设我有一个博客管理器对象,希望生成它在数据库中找到的博客列表.这样做的选项(据我所知)是:

>新博客();
> $this-> loader-> blog();

> loader对象创建各种其他类型的对象,如数据库对象,文本过滤器等.

> $this-> blogEntryFactory-> create();

但是,#1很糟糕,因为它会产生强耦合. #2仍然看起来很糟糕,因为这意味着必须事先注入对象工厂 – 暴露它可以创建的所有其他对象.

3号似乎没问题,但是如果我使用#3,我是否将“new”关键字放在blogEntryFactory本身中,或者,我是否将加载器注入blogEntryFactory并使用加载器?

如果我有许多不同的工厂,比如blogEntryFactory(例如我可以有userFactory和commentFactory),那么在所有这些不同的工厂中放置“new”关键字就会产生依赖性问题.

我希望这是有道理的…

注意

我已经得到了一些关于这个特定博客示例如何不必要的答案,但事实上,你应该使用抽象工厂模式的情况,这就是我得到的观点.你是在这种情况下使用“新”还是做其他事情?

我不是专家,但我会对此采取行动.这假设Blog只是一个数据模型对象,它充当某些数据的容器并由控制器填充(新的Blog不是很有意义).在这种情况下,Blog是对象图的一个叶子,使用new是可以的.如果您要测试需要创建博客的方法,您必须同时测试博客的创建,并且使用模拟对象没有意义..博客不会持续超过此方法.

举个例子,假设PHP没有数组结构但有一个集合对象.你会打电话给$this-> collectionsFactory-> create(),还是会满意地说新的数组;?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读