1
00:00:00,180 --> 00:00:00,780
Bienvenidos.

2
00:00:00,810 --> 00:00:05,940
Continuamos con un nuevo patrón de diseño, el APTRA Factory, que también es creacional como el singleton,

3
00:00:06,000 --> 00:00:11,460
pero acá para crear familia de objetos familiay que están relacionadas mediante la herencia o implementación

4
00:00:11,460 --> 00:00:12,210
de interfaces.

5
00:00:12,270 --> 00:00:16,380
Pero acá tenemos 2 parte 1 el producto, el objeto que vamos a crear.

6
00:00:16,470 --> 00:00:22,140
Y por otro lado tenemos las clases fábrica, la que crea la instancia patudo, primero con los productos,

7
00:00:22,230 --> 00:00:27,630
con los objetos que se van a crear su familia de objetos que se le conoce en este patrón como el producto.

8
00:00:27,690 --> 00:00:29,640
Por ejemplo, acá tenemos el producto.

9
00:00:30,000 --> 00:00:35,400
El producto de un ejemplo muy típico para representar este patrón es interfaces de usuario.

10
00:00:35,460 --> 00:00:40,740
Por ejemplo, quiero crear un botón, pero un botón lo podemos implementar tanto en Linux como Windows,

11
00:00:40,770 --> 00:00:44,040
como en Android, en making touch o en cualquier sistema operativo.

12
00:00:44,250 --> 00:00:50,580
Entonces vamos a tener un producto a un botón, un producto B, por ejemplo, una lista SELECT, un

13
00:00:50,580 --> 00:00:57,770
combobox y podríamos tener un producto C, una ventana de Windows, por ejemplo o panel y por cada uno

14
00:00:57,770 --> 00:01:00,990
nuestro producto vamos a tener implementaciones concreta.

15
00:01:01,080 --> 00:01:06,360
Bueno, cada producto se representa como una clase abstracta o una interfaz y la clase concreta sería

16
00:01:06,360 --> 00:01:07,140
la implementación.

17
00:01:07,260 --> 00:01:09,780
En el caso de producto A. Supongamos que es un botón.

18
00:01:09,840 --> 00:01:16,260
Vamos a tener una implementación concreta para el botón de Linux, otro para el botón de Windows, otro

19
00:01:16,260 --> 00:01:18,870
para el botón de antro y así por casi tema.

20
00:01:19,260 --> 00:01:25,230
Lo mismo con el producto de una ventana, un panel también uno por cada sistema operativo y lo mismo

21
00:01:25,230 --> 00:01:26,430
por cada elemento.

22
00:01:26,430 --> 00:01:32,760
Interfaz gráfica, una lista desplegable ComboBox se fijan, entonces son familia, objeto que lo podríamos

23
00:01:32,760 --> 00:01:34,800
implementar de diferentes formas.

24
00:01:34,920 --> 00:01:39,090
Y por otro lado, tenemos la fábrica siempre una fábrica abstracta.

25
00:01:39,150 --> 00:01:46,020
El Latre Factory podría ser una clase tracto o bien una interfaz con métodos abstractos para crear estos

26
00:01:46,020 --> 00:01:47,220
productos objetos.

27
00:01:47,250 --> 00:01:52,500
Por eso se le conoce como Abstract Factory, justamente por hectómetros abstracto que tienen que implementar

28
00:01:52,560 --> 00:01:58,020
fábricas concretas, por ejemplo, factoría concreta 1 y factoría concretados.

29
00:01:58,110 --> 00:02:00,870
Tomando mismo ejemplo de los botones de ventana.

30
00:02:00,960 --> 00:02:06,480
Vamos a tener una fábrica o factoría concreta por sistema operativo, por ejemplo Factoría Windows o

31
00:02:06,480 --> 00:02:11,280
Factoría Linux, Factoría Mackintosh y factoría Android o lo que sea.

32
00:02:11,460 --> 00:02:18,990
Y cada una va fabricar según su sistema operativo el elemento, el producto por ejemplo producto a producto

33
00:02:19,020 --> 00:02:22,830
de recuerden que producto A. En nuestro ejemplo sería el botón.

34
00:02:22,950 --> 00:02:27,990
Por lo tanto, para Windows crea un botón, pero Windows también va a crear una ventana.

35
00:02:28,110 --> 00:02:32,220
También puede crear un combobox, un panel, en fin, un menú.

36
00:02:32,250 --> 00:02:36,300
Cualquier elemento de interfaces de usuario y lo mismo para Linux.

37
00:02:36,390 --> 00:02:37,800
También va a tener un botón.

38
00:02:37,830 --> 00:02:42,660
Linux va a tener una ventana, un panel, una lista plegable y así por casi tema operativo.

39
00:02:42,750 --> 00:02:47,370
Entonces, resumiendo, este patrón nos permite crear diferentes sujeto que están relacionados con un

40
00:02:47,370 --> 00:02:50,580
parentesco familiar de objeto, ya sea mediante la herencia.

41
00:02:50,670 --> 00:02:57,090
Tal como vemos producto A. Tiene dos productos concretos o podría tener muchos más, pero implementan

42
00:02:57,180 --> 00:03:02,910
o heredan de esta clase un poco más genérica y lo mismo por cada familia producto B.

43
00:03:03,000 --> 00:03:03,280
En fin.

44
00:03:03,420 --> 00:03:08,190
Y la fábrica que crean estos productos A y B y cada fábrica para tinta.

45
00:03:08,200 --> 00:03:08,880
Implementaciones.

46
00:03:09,000 --> 00:03:14,490
Una de la característica que debe tener este patrón es que sea escalable, es decir, que permita incluir

47
00:03:14,580 --> 00:03:20,790
nueva familia de producto, crear una nueva fábrica concreta con nuevos productos que va a implementar,

48
00:03:20,790 --> 00:03:27,420
que va a instanciar, a crear esta fábrica, pero no por ejemplo modificar productos o fabrica existente,

49
00:03:27,570 --> 00:03:33,240
ya que podría romper nuestro sistema siempre añadir nueva característica, nueva familia, pero no modificar

50
00:03:33,300 --> 00:03:34,920
las existentes de aquí.

51
00:03:35,010 --> 00:03:41,640
Probablemente la estemos utilizando en nuestro código bien como ejemplo en el curso vamos a ver un ejemplo

52
00:03:41,730 --> 00:03:47,790
para ordenar pisás una fábrica de pisás el producto serían las piezas de diferente tipo con diferentes

53
00:03:47,790 --> 00:03:53,850
ingrediente y las fábricas van a ser las pizzerías la que crean fabrican estas pisÃ.

54
00:03:53,940 --> 00:04:00,480
Podríamos tener una pizzería de Nueva York, una pesquería en California, otra sería en Italia, en

55
00:04:00,480 --> 00:04:06,540
Nápoles y cada una va a tener su propia familia de producto, sus propias pizzas con sus ingredientes

56
00:04:06,630 --> 00:04:09,660
se fijan es hacer momeno la idea que vamos a implementar.

57
00:04:09,750 --> 00:04:15,600
Por ejemplo, la pizza en Nueva York va a tener pepperoni vegetariana y también italiana, cada una

58
00:04:15,600 --> 00:04:16,440
con su ingrediente.

59
00:04:16,560 --> 00:04:21,710
Pero la pizzería de Los Angele va a tener, por ejemplo, cuatro queso peperoni.

60
00:04:21,720 --> 00:04:23,970
Quizá también elfin diferentes tipos.

61
00:04:24,060 --> 00:04:27,690
Recuerden que en MML estas relaciones son de herencia.

62
00:04:27,900 --> 00:04:33,860
Este triangula herencia o interfases cuando es punteada es la implementación de interfaz.

63
00:04:34,080 --> 00:04:38,640
Realiza una implementación cuando continua hereda de una clase.

64
00:04:38,820 --> 00:04:41,940
Pero recuerden, este patrón lo podemos hacer con clase abstracta.

65
00:04:42,000 --> 00:04:42,660
Por lo tanto.

66
00:04:42,750 --> 00:04:45,420
Herencia o bien implementando interfaces.

67
00:04:45,630 --> 00:04:47,230
Esta página de Wikipedia.

68
00:04:47,230 --> 00:04:53,010
Así que lo pueden buscar en Google Atràs Factory Wikipedia iban a encontrar esta página con todo al

69
00:04:53,010 --> 00:04:53,370
detalle.

70
00:04:53,430 --> 00:04:58,710
De esta forma todo lo que pasa a un diseño lo pueden aprender bastante bien o profundizar en Wikipedia.

71
00:04:58,770 --> 00:04:59,890
También se pueden comprar el.

72
00:04:59,970 --> 00:05:07,470
Ibro gof de levantá los cuatro de patrones de diseño orientado objetos bien, vamos a implementarlo.

73
00:05:08,400 --> 00:05:11,990
Lo primero vamos a cerrar todo esto, vamos a crear un pacato.

74
00:05:14,470 --> 00:05:15,070
Para Qhapaq.

75
00:05:15,700 --> 00:05:22,210
En vez de singleton factoria bien, vamos a crear una nueva clase.

76
00:05:23,670 --> 00:05:27,600
Es un producto abstracto, entonces le vamos a llamar Pisa producto.

77
00:05:30,230 --> 00:05:36,530
Bien, lo primero, una clase tracta entonces un after public class o public astra class.

78
00:05:36,590 --> 00:05:37,280
Como queramos.

79
00:05:38,570 --> 00:05:38,960
Bien.

80
00:05:40,410 --> 00:05:41,080
Y lo primero?

81
00:05:41,260 --> 00:05:44,650
Bueno, toda pisÃ va a tener, por ejemplo, un nombre.

82
00:05:49,060 --> 00:05:54,610
Del tipo string nombre va a tener una masa en vez de privé pudiesse protected por herencia.

83
00:05:56,110 --> 00:06:02,780
Protected La masa se delgada, gruesa, se fijan llega también, protestÃ.

84
00:06:04,870 --> 00:06:12,000
Quién más podría tener una pizza salsa protected String salsa?

85
00:06:12,880 --> 00:06:13,900
Qué más va a tener?

86
00:06:13,930 --> 00:06:19,660
Ingredientes del tipo Liz del tipo ingrediente.

87
00:06:19,750 --> 00:06:25,120
Podría ser una clase, pero para simplificar vamos a colocar es trenca ingredientes solamente vamos

88
00:06:25,120 --> 00:06:30,040
a colocar el nombre, por ejemplo pepperoni extra, queso, carne, lo que queramos.

89
00:06:31,900 --> 00:06:35,940
Ingredientes vamos a importar list@ como siempre de llaba útil.

90
00:06:36,850 --> 00:06:38,740
Vamos a tener un constructor.

91
00:06:41,190 --> 00:06:44,520
Con generad constructor, sin parámetros.

92
00:06:45,740 --> 00:06:50,450
Simplemente bueno, pizza producto inicializamos ingredientes.

93
00:06:54,690 --> 00:06:57,000
New ArrayList Vitto.

94
00:06:58,560 --> 00:07:04,200
Iba a tener mtodos abstracto y métodos en común que lo pudiera utilizar o implementar patotas pisÃ,

95
00:07:04,260 --> 00:07:09,510
por ejemplo Tuam más o menos se van a preparar igual, se van a cocinar, se van a empaquetar, cortar.

96
00:07:09,630 --> 00:07:16,170
Quizá algunas se puedan cortar de forma diferente, según la pizzería que San triÃngulo otra encuadrado.

97
00:07:16,320 --> 00:07:22,050
Lo mismo que cocinar también una pueden cocinar durante un tiempo más prolongado, otras van a cocinar

98
00:07:22,140 --> 00:07:23,310
a una temperatura mayor.

99
00:07:23,430 --> 00:07:26,280
Esos dos método cocinar y cortar puede ser abstracto.

100
00:07:26,370 --> 00:07:31,830
Quizás empaquetar podría ser en común genérico y preparar, por supuesto, pero vamos a colocar el método

101
00:07:31,830 --> 00:07:32,280
primero.

102
00:07:32,280 --> 00:07:37,590
Preparar public voy preparar.

103
00:07:39,290 --> 00:07:40,040
Shout.

104
00:07:41,650 --> 00:07:43,000
Preparando.

105
00:07:44,360 --> 00:07:44,840
Nombre?

106
00:07:45,200 --> 00:07:46,260
Nombre la pisa bien.

107
00:07:47,060 --> 00:07:47,590
Shout.

108
00:07:51,360 --> 00:07:54,600
Seleccionando la masa y la masa.

109
00:07:55,880 --> 00:07:56,930
Agregando salsa.

110
00:08:08,530 --> 00:08:11,740
Agregando ingredientes, pero lo ingredientes es un foro.

111
00:08:12,460 --> 00:08:19,540
Entonces dis ingredientes, punto, forillo, ingrediente.

112
00:08:21,320 --> 00:08:25,300
Shout y en relatos se puede simplificar todo acá.

113
00:08:25,640 --> 00:08:28,510
Entonces, como siempre, dejame estafarme.

114
00:08:33,550 --> 00:08:35,070
Imprimimos Ca1 Ditto.

115
00:08:35,470 --> 00:08:39,280
Ahí lo tenemos, Paulito, preparar la pizza, qué otro metodo podríamos tener?

116
00:08:39,730 --> 00:08:40,660
Vamos a bajar.

117
00:08:40,780 --> 00:08:43,510
Método cocinar, cortar y empaquetar.

118
00:08:43,750 --> 00:08:44,290
Por ejemplo.

119
00:08:44,350 --> 00:08:46,090
Bueno, partamos por empaquetar.

120
00:08:47,200 --> 00:08:51,460
Public void Empaquetar.

121
00:08:53,200 --> 00:08:53,650
Shout.

122
00:09:00,160 --> 00:09:01,860
Poniendo la pieza en una caja de empaque.

123
00:09:05,170 --> 00:09:06,010
Y qué otro método?

124
00:09:06,100 --> 00:09:09,490
Cocinar no es un public void.

125
00:09:11,530 --> 00:09:17,110
Cocinar, pero lo vamos a dejar como abstracto para que cada uno implemente su propia forma de cocinar.

126
00:09:17,260 --> 00:09:21,120
Entonces vamos a colocar austra pulí fue cocinar puntico.

127
00:09:21,550 --> 00:09:25,370
También vamos a tener otro método abstracto, abstracto.

128
00:09:25,930 --> 00:09:28,900
Voy corta, corta la pizza.

129
00:09:30,060 --> 00:09:31,530
Aunque lo podemos colocar en orden.

130
00:09:32,160 --> 00:09:37,420
De hecho, podría colocar, preparar, al final empaquetar y acabamos a cocinar y cortar.

131
00:09:37,650 --> 00:09:41,940
Entonces todo lo cortamos, lo dejamos acá solamente por un orden.

132
00:09:46,490 --> 00:09:47,180
Ahí tenemos.

133
00:09:48,720 --> 00:09:54,570
Y finalmente podríamos tener en méto tus trunk para ir mostrando el detalle completo, la pisÃ vamos

134
00:09:54,570 --> 00:09:57,750
a sobrescribir generated tu estric.

135
00:09:59,130 --> 00:09:59,500
Eh?

136
00:09:59,970 --> 00:10:00,390
Ok.

137
00:10:00,630 --> 00:10:00,780
Bien.

138
00:10:00,870 --> 00:10:01,980
Y por ahora lo dejamos así.

139
00:10:02,190 --> 00:10:05,610
Aunque también lo podemos implementar con más detalle utilizando el String Builder.

140
00:10:05,640 --> 00:10:10,230
Se acuerdan ir agregando cada atributo y después con un for ingrediente.

141
00:10:10,500 --> 00:10:13,140
Pero una forma más resumida está bien para el ejemplo.

142
00:10:13,570 --> 00:10:13,890
Y listo.

143
00:10:13,980 --> 00:10:17,190
Hoy tenemos nuestra pista abstracta, nuestro producto.

144
00:10:17,400 --> 00:10:18,420
Recuerden, abstracta.

145
00:10:18,540 --> 00:10:20,880
Después vamos a tener una pizza distinta.

146
00:10:20,880 --> 00:10:21,540
Concreta.

147
00:10:21,750 --> 00:10:22,530
En realidad, varias.

148
00:10:22,530 --> 00:10:26,640
pisÃ por cada pizzería, por cada tipo de pizzería o familia.

149
00:10:26,740 --> 00:10:31,170
Cada una va a tener su ingrediente propio de cada país o preparación tradicional.

150
00:10:31,230 --> 00:10:31,570
No sé.

151
00:10:31,710 --> 00:10:37,470
Pero continuamos la siguiente clase para que no sea tan extenso con la clase abstracta de fábrica.

152
00:10:37,560 --> 00:10:38,190
Nos vemos.
