FACTORY METHOD
• Define una interfaz para crear un
objeto, pero deja que sean las
subclases quienes decidan qué clase
instanciar
• Permite que una clase delegue en sus
subclases la creación de objetos
DISEÑO DE SISTEMAS
FACTORY METHOD: ESTRUCTURA
Declara el método de
Define la interfaz creada
factory que devuelve un
por el objeto factory
objeto tipo producto
Creator ...
Product
factoryMethod() product = factoryMethod()
Implementa la
interfaz del
anOperation() ...
producto
ConcreteCreator
ConcreteProduct return new ConcreteProduct
factoryMethod())
Devuelve una instancia
de un producto concreto
DISEÑO DE SISTEMAS
FACTORY METHOD
Ejemplo
Si tenemos que permitir a un cliente crear
triángulos (equiláteros, escalenos e
isósceles)
DISEÑO DE SISTEMAS
FACTORY METHOD
Tenemos nuestro ConcreteProduct y su clase
interfaz class Factory Method
ITriangulo
Triangulo
Equilatero Isosceles Escaleno
5
FACTORY METHOD
Una clase triángulo:
DISEÑO DE SISTEMAS
FACTORY METHOD
Subclase Equilátero
7
FACTORY METHOD
Subclase Isósceles
8
FACTORY METHOD
Subclase Escaleno
9
FACTORY METHOD
Este patrón permite que no tengamos que
decidir qué subclase instanciar, sino que lo
haga el propio método de creación
Podemos agregar una clase creador (factoría)
y su interfaz
DISEÑO DE SISTEMAS
FACTORY METHOD
class Factory Method
ITriangulo
Creator
Triangulo ConcreteCreator
Equilatero Isosceles Escaleno
DISEÑO DE SISTEMAS
FACTORY METHOD
En nuestro ejemplo
class Factory Method
ITriangulo TrianguloFactoryMethod
+ createTriangulo(int, int, int) : void
Triangulo TrianguloFactory
+ createTriangulo(int, int, int) : void
Equilatero Isosceles Escaleno
DISEÑO DE SISTEMAS
FACTORY METHOD
DISEÑO DE SISTEMAS
FACTORY METHOD
El cliente lo crea fácilmente:
DISEÑO DE SISTEMAS