In the book Domain Driven Design, by Eric Evans, in Chapter 6 in the section on "Factories" (page 139) it says the following:
"The two basic requirements for any good FACTORY are:
…
"2. The FACTORY should be abstracted to the type desired rather than the concrete class(es) created."
Could you please elaborate on what is meant by that statement about basic requirement number 2.
Best Answer
I think it means you should never return a concrete type from your factory.
For example, if you have an interface, let's say
ISomething
, an abstract classSomethingBase
and finally some classes that implement this interface and inherit from the base class. Your creation method should return the interface type, instead of the base type. I think that is the idea.Instead of
I hope it helps, Carlos.