diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java index 29e9272f6..618b98c52 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java @@ -3,12 +3,21 @@ package com.iluwatar.abstractfactory; /** * + * The Abstract Factory pattern provides a way to encapsulate a group of individual + * factories that have a common theme without specifying their concrete classes. In + * normal usage, the client software creates a concrete implementation of the abstract + * factory and then uses the generic interface of the factory to create the concrete + * objects that are part of the theme. The client does not know (or care) which + * concrete objects it gets from each of these internal factories, since it uses only + * the generic interfaces of their products. This pattern separates the details of + * implementation of a set of objects from their general usage and relies on object + * composition, as object creation is implemented in methods exposed in the factory + * interface. + *

* The essence of the Abstract Factory pattern is a factory interface * ({@link KingdomFactory}) and its implementations ({@link ElfKingdomFactory}, - * {@link OrcKingdomFactory}). - *

- * The example uses both concrete implementations to create a king, a castle and - * an army. + * {@link OrcKingdomFactory}). The example uses both concrete implementations to + * create a king, a castle and an army. * */ public class App {