Bienvenidos.
Continuamos con un nuevo patrón de diseño, el APTRA Factory, que también es creacional como el singleton,
pero acá para crear familia de objetos familiay que están relacionadas mediante la herencia o implementación
de interfaces.
Pero acá tenemos 2 parte 1 el producto, el objeto que vamos a crear.
Y por otro lado tenemos las clases fábrica, la que crea la instancia patudo, primero con los productos,
con los objetos que se van a crear su familia de objetos que se le conoce en este patrón como el producto.
Por ejemplo, acá tenemos el producto.
El producto de un ejemplo muy típico para representar este patrón es interfaces de usuario.
Por ejemplo, quiero crear un botón, pero un botón lo podemos implementar tanto en Linux como Windows,
como en Android, en making touch o en cualquier sistema operativo.
Entonces vamos a tener un producto a un botón, un producto B, por ejemplo, una lista SELECT, un
combobox y podríamos tener un producto C, una ventana de Windows, por ejemplo o panel y por cada uno
nuestro producto vamos a tener implementaciones concreta.
Bueno, cada producto se representa como una clase abstracta o una interfaz y la clase concreta sería
la implementación.
En el caso de producto A. Supongamos que es un botón.
Vamos a tener una implementación concreta para el botón de Linux, otro para el botón de Windows, otro
para el botón de antro y así por casi tema.
Lo mismo con el producto de una ventana, un panel también uno por cada sistema operativo y lo mismo
por cada elemento.
Interfaz gráfica, una lista desplegable ComboBox se fijan, entonces son familia, objeto que lo podríamos
implementar de diferentes formas.
Y por otro lado, tenemos la fábrica siempre una fábrica abstracta.
El Latre Factory podría ser una clase tracto o bien una interfaz con métodos abstractos para crear estos
productos objetos.
Por eso se le conoce como Abstract Factory, justamente por hectómetros abstracto que tienen que implementar
fábricas concretas, por ejemplo, factoría concreta 1 y factoría concretados.
Tomando mismo ejemplo de los botones de ventana.
Vamos a tener una fábrica o factoría concreta por sistema operativo, por ejemplo Factoría Windows o
Factoría Linux, Factoría Mackintosh y factoría Android o lo que sea.
Y cada una va fabricar según su sistema operativo el elemento, el producto por ejemplo producto a producto
de recuerden que producto A. En nuestro ejemplo sería el botón.
Por lo tanto, para Windows crea un botón, pero Windows también va a crear una ventana.
También puede crear un combobox, un panel, en fin, un menú.
Cualquier elemento de interfaces de usuario y lo mismo para Linux.
También va a tener un botón.
Linux va a tener una ventana, un panel, una lista plegable y así por casi tema operativo.
Entonces, resumiendo, este patrón nos permite crear diferentes sujeto que están relacionados con un
parentesco familiar de objeto, ya sea mediante la herencia.
Tal como vemos producto A. Tiene dos productos concretos o podría tener muchos más, pero implementan
o heredan de esta clase un poco más genérica y lo mismo por cada familia producto B.
En fin.
Y la fábrica que crean estos productos A y B y cada fábrica para tinta.
Implementaciones.
Una de la característica que debe tener este patrón es que sea escalable, es decir, que permita incluir
nueva familia de producto, crear una nueva fábrica concreta con nuevos productos que va a implementar,
que va a instanciar, a crear esta fábrica, pero no por ejemplo modificar productos o fabrica existente,
ya que podría romper nuestro sistema siempre añadir nueva característica, nueva familia, pero no modificar
las existentes de aquí.
Probablemente la estemos utilizando en nuestro código bien como ejemplo en el curso vamos a ver un ejemplo
para ordenar pisás una fábrica de pisás el producto serían las piezas de diferente tipo con diferentes
ingrediente y las fábricas van a ser las pizzerías la que crean fabrican estas pisÃ.
Podríamos tener una pizzería de Nueva York, una pesquería en California, otra sería en Italia, en
Nápoles y cada una va a tener su propia familia de producto, sus propias pizzas con sus ingredientes
se fijan es hacer momeno la idea que vamos a implementar.
Por ejemplo, la pizza en Nueva York va a tener pepperoni vegetariana y también italiana, cada una
con su ingrediente.
Pero la pizzería de Los Angele va a tener, por ejemplo, cuatro queso peperoni.
Quizá también elfin diferentes tipos.
Recuerden que en MML estas relaciones son de herencia.
Este triangula herencia o interfases cuando es punteada es la implementación de interfaz.
Realiza una implementación cuando continua hereda de una clase.
Pero recuerden, este patrón lo podemos hacer con clase abstracta.
Por lo tanto.
Herencia o bien implementando interfaces.
Esta página de Wikipedia.
Así que lo pueden buscar en Google Atràs Factory Wikipedia iban a encontrar esta página con todo al
detalle.
De esta forma todo lo que pasa a un diseño lo pueden aprender bastante bien o profundizar en Wikipedia.
También se pueden comprar el.
Ibro gof de levantá los cuatro de patrones de diseño orientado objetos bien, vamos a implementarlo.
Lo primero vamos a cerrar todo esto, vamos a crear un pacato.
Para Qhapaq.
En vez de singleton factoria bien, vamos a crear una nueva clase.
Es un producto abstracto, entonces le vamos a llamar Pisa producto.
Bien, lo primero, una clase tracta entonces un after public class o public astra class.
Como queramos.
Bien.
Y lo primero?
Bueno, toda pisÃ va a tener, por ejemplo, un nombre.
Del tipo string nombre va a tener una masa en vez de privé pudiesse protected por herencia.
Protected La masa se delgada, gruesa, se fijan llega también, protestÃ.
Quién más podría tener una pizza salsa protected String salsa?
Qué más va a tener?
Ingredientes del tipo Liz del tipo ingrediente.
Podría ser una clase, pero para simplificar vamos a colocar es trenca ingredientes solamente vamos
a colocar el nombre, por ejemplo pepperoni extra, queso, carne, lo que queramos.
Ingredientes vamos a importar list@ como siempre de llaba útil.
Vamos a tener un constructor.
Con generad constructor, sin parámetros.
Simplemente bueno, pizza producto inicializamos ingredientes.
New ArrayList Vitto.
Iba a tener mtodos abstracto y métodos en común que lo pudiera utilizar o implementar patotas pisÃ,
por ejemplo Tuam más o menos se van a preparar igual, se van a cocinar, se van a empaquetar, cortar.
Quizá algunas se puedan cortar de forma diferente, según la pizzería que San triÃngulo otra encuadrado.
Lo mismo que cocinar también una pueden cocinar durante un tiempo más prolongado, otras van a cocinar
a una temperatura mayor.
Esos dos método cocinar y cortar puede ser abstracto.
Quizás empaquetar podría ser en común genérico y preparar, por supuesto, pero vamos a colocar el método
primero.
Preparar public voy preparar.
Shout.
Preparando.
Nombre?
Nombre la pisa bien.
Shout.
Seleccionando la masa y la masa.
Agregando salsa.
Agregando ingredientes, pero lo ingredientes es un foro.
Entonces dis ingredientes, punto, forillo, ingrediente.
Shout y en relatos se puede simplificar todo acá.
Entonces, como siempre, dejame estafarme.
Imprimimos Ca1 Ditto.
Ahí lo tenemos, Paulito, preparar la pizza, qué otro metodo podríamos tener?
Vamos a bajar.
Método cocinar, cortar y empaquetar.
Por ejemplo.
Bueno, partamos por empaquetar.
Public void Empaquetar.
Shout.
Poniendo la pieza en una caja de empaque.
Y qué otro método?
Cocinar no es un public void.
Cocinar, pero lo vamos a dejar como abstracto para que cada uno implemente su propia forma de cocinar.
Entonces vamos a colocar austra pulí fue cocinar puntico.
También vamos a tener otro método abstracto, abstracto.
Voy corta, corta la pizza.
Aunque lo podemos colocar en orden.
De hecho, podría colocar, preparar, al final empaquetar y acabamos a cocinar y cortar.
Entonces todo lo cortamos, lo dejamos acá solamente por un orden.
Ahí tenemos.
Y finalmente podríamos tener en méto tus trunk para ir mostrando el detalle completo, la pisÃ vamos
a sobrescribir generated tu estric.
Eh?
Ok.
Bien.
Y por ahora lo dejamos así.
Aunque también lo podemos implementar con más detalle utilizando el String Builder.
Se acuerdan ir agregando cada atributo y después con un for ingrediente.
Pero una forma más resumida está bien para el ejemplo.
Y listo.
Hoy tenemos nuestra pista abstracta, nuestro producto.
Recuerden, abstracta.
Después vamos a tener una pizza distinta.
Concreta.
En realidad, varias.
pisÃ por cada pizzería, por cada tipo de pizzería o familia.
Cada una va a tener su ingrediente propio de cada país o preparación tradicional.
No sé.
Pero continuamos la siguiente clase para que no sea tan extenso con la clase abstracta de fábrica.
Nos vemos.