我见过术语SomeProducer
、SomeProvider
和SomeFactory
,在某些项目中几乎随机用作类名。
我还没有看到上述名称对DI Beans责任的明确定义。通常,SomeFactory
取决于OtherService
或OtherConnector
。实际实现和命名取决于开发人员。
这个问题的原因:我想写干净,可读和可理解的代码。使他人摆脱因阅读和理解意大利面条代码而造成的痛苦。
从我个人的角度来看,我认为存在层次结构关系
该Provider
提供了诸如对象关系映射之类的服务,例如,我们使用HibernatePersistenceProvider
来告诉容器我们将使用Hibernate作为JPA的实现。 同时,我们创建EntityManagerFactory
来管理从中创建的所有实体管理器,然后Producer
来创建托管对象,以便 CDI 可以发现它们。