What
is the need for Abstract Factory
Pattern in C# (C Sharp)?
Abstract
Factory Pattern has a higher level of abstraction when compared to the
Factory Method Pattern. You will be using Abstract Factory Pattern when
you should return one among several set of classes that are related.
To illustrate on it, consider the following scenario: Your application
has a base class called Garden which contains multiple instances of Plant
class to show what all plants are planted in the Garden. Garden class
is further drilled down into different derived classes namely VegOnlyGarden,
FruitsOnlyGarden, MixedGarden and so on.
Plant class
can have different derived classes to denote different plants like Broccoli,
Peas, Pomogranate and so on. Now each derived class of Garden will have
a different set of Plant instances within it. For example, FruitsOnlyGarden
will contain Plants derived classes namely Pomogranate, Apple, Mango.
Similarly VegOnlyGarden will contain Plants derived classes namely
Broccoli, Peas, Spinach.
Deciding
which derived class of Garden has to be instantiated (which in turn decides
which all derived classes of Plant have to be instantiated) is done by
a method implementing Abstract Factory Pattern.
You are also
permitted to use Simple Factory Pattern inside Abstract Factory Pattern.
In this scenario, deciding which all derived classes of Plant have to
be created inside the instance of Garden can be done using Simple Factory
Pattern.