- ¿En qué se diferencian estos tres patrones entre sí?
Fábrica: Crea objetos sin exponer la lógica de instanciación al cliente.
Método de fábrica: defina una interfaz para crear un objeto, pero deje que las subclases decidan qué clase instanciar. El método Factory permite que una clase difiera la creación de instancias en subclases
Abstract Factory: proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas.
El patrón AbstractFactory usa la composición para delegar la responsabilidad de crear objetos a otra clase, mientras que el patrón de diseño del método Factory usa la herencia y se basa en la clase derivada o subclase para crear el objeto
- ¿Cuándo usar cuál?
Fábrica: el cliente solo necesita una clase y no le importa qué implementación concreta esté obteniendo.
Método de fábrica: el cliente no sabe qué clases concretas se requerirán para crear en tiempo de ejecución, pero solo quiere obtener una clase que haga el trabajo.
AbstactFactory: cuando su sistema tiene que crear varias familias de productos o si desea proporcionar una biblioteca de productos sin exponer los detalles de implementación.
Las clases Abstract Factory a menudo se implementan con el Método Factory. Los métodos de fábrica generalmente se llaman dentro de los métodos de plantilla.
- Y también, si es posible, ¿hay ejemplos de Java relacionados con estos patrones?
Factory y FactoryMethod
Intención:
Defina una interfaz para crear un objeto, pero permita que las subclases decidan qué clase instanciar. Factory Method permite que una clase difiera la creación de instancias en subclases.
Diagrama UML :
Producto: define una interfaz de los objetos que crea el método Factory.
ConcreteProduct: implementa la interfaz del producto
Creador: declara el método Factory
ConcreateCreator: implementa el método Factory para devolver una instancia de un ConcreteProduct
Planteamiento del problema: cree una Fábrica de juegos utilizando los Métodos de fábrica, que definen la interfaz del juego.
Fragmento de código:
Patrón de fábrica ¿Cuándo usar los métodos de fábrica?
Comparación con otros patrones de creación:
El diseño comienza con el Método Factory (menos complicado, más personalizable, proliferan las subclases) y evoluciona hacia Abstract Factory, Prototype o Builder (más flexible, más complejo) a medida que el diseñador descubre dónde se necesita más flexibilidad
Las clases de Fábrica abstracta a menudo se implementan con Métodos de fábrica , pero también se pueden implementar utilizando Prototype
Referencias para lecturas adicionales: patrones de diseño de creación de código fuente