微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 避免注入服务容器而不是单独服务的技术原因是什么?

通常当我需要将一个或多个服务注入另一个服务时,我明确地注入每个服务.然而,我有一种情况,注入服务容器本身将使事情变得更容易.我知道这不是一个推荐的做法,但我很好奇技术原因是为了阻止这一点.这是合法的,因为它太资源密集,还是更个人的感觉,它太凌乱了?
如果您注入容器,则不会使依赖关系清楚.事实上,你比以前更模糊他们.如果你有这样的课程…
class DocumentCreator(IFileNamer fileNamer,IRepository repository)
{ ... }

…你可以看到依赖关系.您还可以轻松地将这些依赖关系模拟为单元测试,以确保您隔离DocumentCreator,并且可以知道任何测试失败都是其代码而不是其依赖关系中的代码的结果.

另一方面,如果你这样做

class DocumentCreator(IDependencyContainer container)
{ ... }

…你掩盖了依赖关系.你不知道,没有检查课程的内部,它需要一个IFileNamer和一个IR存储库.

为了测试DocumentCreator,您也不会轻易知道您需要放入容器中的嘲弄.模拟IDependencyContainer根本不会帮助你;您的类仍然会在测试中失败,因为容器不会包含IFileNamer和IRepository,除非您检查类的内部结构以确定它们是必需的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐