An abstract factory typically constructs a "family" of related objects, each sub-classing a respective abstraction. The example here can construct plants and plant pickers; the OrangeFactory
constructs Oranges
and OrangePickers
, and the AppleFactory
constructs Apples
and ApplePickers
.
But if the family only consists of a single abstraction, would it still be an abstract factory? Consider:
interface PlantFactory {
Plant makePlant();
}
public class AppleFactory implements PlantFactory {
Plant makePlant() {
return new Apple();
}
}
Is this still an example of an abstract factory, or is it something else? I've never seen anything like this in any examples of factories, abstract factories, or factory methods. And yet, it still seems to be useful. Is there anything inherently wrong with such a design pattern?