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.
[フレーム]
(追記) (追記ここまで)
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.