For Guice solutions like Providers, CheckedProviders seem to be a nice replacement of the Factory classes. Yet, there are certain cases where in Factories seem to be irreplaceable. Consider a case where in constructor for a class has arguments, and there is no default constructor available. The problem over here is very common with the value or domain objects. For example, if SearchRequest
were modified a little, and default constructor is changed to the following:
public SearchRequest(String departureLocation, String arrivalLocation, Date flightDate){ this.departureLocation = departureLocation; this.arrivalLocation = arrivalLocation; this.flightDate = flightDate; }
Now, in such a case, injecting the Provider and obtaining the value object instance with provider.get()
would not be feasible. One solution could be implementing a factory and via it exposing the APIs to constructor. Then, we would inject the factory to prepare value objects.
Guice provides a simple solution for...