I\'m developing a simple tree-structured database and I\'m usually setting dependencies or optional settings via a Builder (Builder pattern). Now I\'m not sure when to use for i
I'm a firm believer in that you don't need to use dependency injection for everything.
For a LookupService
it would be natural inject a Dictionary
such that its implementation can be swapped out by configuration.
For a Firewall
on the other hand. It would be natural for it to create its own FireWallRules
, perhaps through a supplied Factory
or a Builder
.
As a guideline, inject what you need to configure, don't automatically inject everything else.
Consider a static factory (*)
when
Lists.newArrayList()
Consider instance factories
when
AbstractFactory
design patternConsider a builder
when
(*)
Static methods are not always testable and the presence of one should in my opinion always be motivated.
A typical usecase for a factory is to decrease coupling. By using a static factory
that ability is completely lost.