1
00:00:00,180 --> 00:00:00,780
Bienvenidos.

2
00:00:00,810 --> 00:00:02,730
Continuamos con los patrones de diseño.

3
00:00:02,890 --> 00:00:05,040
Bien, pero partamos con lo que son los patrones.

4
00:00:05,130 --> 00:00:05,970
Para qué nos sirven?

5
00:00:06,060 --> 00:00:11,760
Son fragmentos de código, algoritmo que nos permiten resolver algún problema cotidiano que se repite

6
00:00:11,850 --> 00:00:14,700
una y otra vez en el desarrollo de nuestras aplicaciones.

7
00:00:14,730 --> 00:00:21,150
Por supuestos orientÃ objeto porque son 100 por ciento utilizando clases, objetos, uso de interfaces,

8
00:00:21,150 --> 00:00:23,520
por supuesto, y buenas prácticas.

9
00:00:23,710 --> 00:00:24,690
Es lo más importante.

10
00:00:24,870 --> 00:00:29,500
Entonces resuelven un problema común y corriente en la programación que se repite.

11
00:00:29,670 --> 00:00:34,830
Pero, sin embargo, estos patrones de diseño no son nuevos, sino que se han ido desarrollando desde

12
00:00:34,830 --> 00:00:40,000
la década del 80 y en los 90 se popularizan bastante.

13
00:00:40,200 --> 00:00:45,330
De hecho, se cree un libro que super conocido, super famoso, escrito por cuatro autores que se le

14
00:00:45,330 --> 00:00:51,180
conoce como el libro de patrones, diseño orientado objeto de la banda de los 4 de la banda.

15
00:00:51,270 --> 00:00:58,350
Es porque son 4 actores y por eso se reconoce como patrones de diseños GOF, G o F, que las siglas

16
00:00:58,440 --> 00:01:01,560
de Going o For, es decir, la banda los 4.

17
00:01:01,650 --> 00:01:10,230
Eric Gama, uno de los autores, Richard el otro Raff Johnson y también Tallón Blicidad y agrupan recogen

18
00:01:10,320 --> 00:01:12,450
23 patrones diseños comunes.

19
00:01:12,540 --> 00:01:17,610
Bueno, por supuesto, en este curso no vamos a ver todo porque da para un curso completo, pero vamos

20
00:01:17,610 --> 00:01:19,350
a ver los 5 principales.

21
00:01:19,440 --> 00:01:25,650
Lo más importante y hay tres categorías están los patrones creacional, tales los estructurales y lo

22
00:01:25,650 --> 00:01:26,580
de comportamiento.

23
00:01:26,700 --> 00:01:30,570
Vamos a partir con el más típico, más básico, también muy utilizado.

24
00:01:30,660 --> 00:01:35,370
El singleton, que es creacional, no permite crear una sola instancia de una clase.

25
00:01:35,490 --> 00:01:40,650
Es decir, amarramos nuestro diseño, nuestra clase, de tal forma que nos permita siempre crear una

26
00:01:40,650 --> 00:01:43,860
sola referencia, una instancia que compartida para toda la aplicación.

27
00:01:43,950 --> 00:01:51,180
Típicamente se utiliza en base atto reutilizar la misma conexión durante y a lo ancho de nuestra aplicación,

28
00:01:51,240 --> 00:01:55,620
pero también se podría manejar un pull, un puzzle, conexiones, algunas conexiones, no solamente

29
00:01:55,620 --> 00:01:56,760
una, sino un grupo.

30
00:01:57,060 --> 00:01:58,140
Comencemos entonces.

31
00:01:58,140 --> 00:02:00,510
Vamos a cerrar todo esto lo que tenemos.

32
00:02:00,600 --> 00:02:02,190
Vamos a crear un nuevo proyecto.

33
00:02:03,920 --> 00:02:04,830
Como siempre.

34
00:02:06,200 --> 00:02:15,920
Siguiente siguiente le vamos a llamar patrones diseño, pero en vez de la ñ n diseño, recuerden que

35
00:02:15,920 --> 00:02:21,710
la Ñ es un caracter especial y no se recomienda como nombre de directorio ni de archivo o simplemente

36
00:02:21,710 --> 00:02:22,670
patrones como quieran.

37
00:02:22,820 --> 00:02:25,850
Bien, finalizar, acá lo tenemos.

38
00:02:26,750 --> 00:02:27,710
Vamos a crear un.

39
00:02:32,150 --> 00:02:38,780
Patrones, punto, ejemplos o mejor, los patrones y el nombre del patrón, por ejemplo, Singleton,

40
00:02:40,360 --> 00:02:47,540
de tal forma vamos a tener un РАМКАХ por cada patrón, el primero Singleton perfecto y listo a puse

41
00:02:47,540 --> 00:02:50,630
crear nueva clase porque en vez de colocar package puse clase.

42
00:02:50,810 --> 00:02:55,010
Entonces colocamos el package y el nombre de la clase punto en mayúscula.

43
00:02:55,850 --> 00:02:57,080
Ejemplo Singleton.

44
00:02:58,400 --> 00:02:59,730
Como siempre con el método Main.

45
00:03:01,010 --> 00:03:02,250
Claro, porque me equivoqué.

46
00:03:02,750 --> 00:03:09,710
En vez de colocar nuevo package acá, por ejemplo acá nuevo package puse nuevo ya class.

47
00:03:10,070 --> 00:03:12,500
Entonces por eso coloqué el nombre completo con el package.

48
00:03:12,560 --> 00:03:17,210
Pero lo mismo acá tengo el package completo y la clase con el método main.

49
00:03:19,520 --> 00:03:19,990
Listo.

50
00:03:20,090 --> 00:03:20,690
Ahí tenemos.

51
00:03:20,900 --> 00:03:21,050
Bien.

52
00:03:21,100 --> 00:03:23,150
Pero esta clase para probar nuestro patrón.

53
00:03:23,300 --> 00:03:26,510
Entonces voy a crear una clase con el patrón diseño.

54
00:03:27,450 --> 00:03:38,190
Entonces, ahora sí crea una clase de vamos a llamar Conexión Bede de base dato singleton conexión vedes

55
00:03:38,190 --> 00:03:45,040
singleton bebé de base dato incluso puede colocar de la mayúscula esto nombre clase.

56
00:03:45,540 --> 00:03:49,290
Entonces la idea tener una sola instancia de esta clase, cómo la podemos Zamarra?

57
00:03:49,410 --> 00:03:54,480
Bueno, primero tenemos que crear un constructor, pero no se puede instancia con el new, porque si

58
00:03:54,480 --> 00:03:59,310
creamos un objeto con el nuevo, vamos a poder crear instancias cuantas veces queramos.

59
00:03:59,460 --> 00:04:01,410
Y la idea restringir el constructor.

60
00:04:01,830 --> 00:04:03,210
Entonces lo primero es que sea private.

61
00:04:03,420 --> 00:04:05,170
Eso es lo primero constructor privado.

62
00:04:05,370 --> 00:04:09,000
No puedo crear una instancia desde fuera con el constructor.

63
00:04:09,270 --> 00:04:13,380
Entonces conexión conexión de vez singleton el nombre de la clase

64
00:04:16,230 --> 00:04:17,400
se fijan en lo primero.

65
00:04:18,270 --> 00:04:23,790
Shout Vamos a imprimir acá un mensaje simulando alguna conexión, por ejemplo, conectándose a algún

66
00:04:23,790 --> 00:04:24,690
motor de auto.

67
00:04:29,880 --> 00:04:33,900
Bueno, todavía no hemos visto nada de JDBC de base datos de conexiones.

68
00:04:34,080 --> 00:04:37,440
Después vamos a ver y de hecho después lo podríamos implementar con este patrón.

69
00:04:37,530 --> 00:04:40,080
Por ahora solamente lo vamos como a simular.

70
00:04:40,170 --> 00:04:45,960
Pero claro, dentro de este constructor debería estar toda la implementación, nuestro código para conectarnos

71
00:04:45,960 --> 00:04:50,940
por ejemplo a SQL, a PostgreSQL o alabarse, dato que queramos.

72
00:04:51,130 --> 00:04:53,700
Bien, entonces, primero el constructor privado.

73
00:04:53,790 --> 00:04:54,480
Primera regla.

74
00:04:54,570 --> 00:04:59,340
La segunda, un método estático tiene que ser estático que nos devuelva la instancia.

75
00:04:59,400 --> 00:05:05,640
Pero la única instancia o referencia de esta clase donde vamos a guardar esta referencia en un atributo

76
00:05:05,730 --> 00:05:06,300
estático.

77
00:05:06,570 --> 00:05:09,240
Entonces por acá vamos a tener un atributo.

78
00:05:09,360 --> 00:05:13,110
Este atributo tiene que ser privado también o también protegido?

79
00:05:13,890 --> 00:05:19,530
Private Static es importante que es estático porque lo podemos reutilizar desde cualquier parte.

80
00:05:19,710 --> 00:05:20,700
Conexión braceando.

81
00:05:20,820 --> 00:05:21,330
Es decir.

82
00:05:21,480 --> 00:05:24,820
Que contenga el tipo o el objeto de esta clase.

83
00:05:25,230 --> 00:05:25,470
Entonces.

84
00:05:25,470 --> 00:05:26,550
El mismo tipo de la clase.

85
00:05:27,540 --> 00:05:28,350
Acá puso un espacio.

86
00:05:28,350 --> 00:05:28,830
Además.

87
00:05:29,130 --> 00:05:33,150
Le vamos a llamar instancia de instancia.

88
00:05:33,840 --> 00:05:34,320
Se fijan?

89
00:05:34,410 --> 00:05:39,060
Ahí tenemos el atributo estático que contiene la referencia y le vamos a llamar instancia.

90
00:05:39,210 --> 00:05:42,570
Entonces vamos a tener una sola instancia de esta clase y vamos a guardar acá.

91
00:05:42,690 --> 00:05:43,860
Ahora, cómo la obtenemos?

92
00:05:44,010 --> 00:05:46,410
Con un método estático, porque el atributo estático.

93
00:05:46,480 --> 00:05:51,120
Bueno, este método tiene que ser público para que lo podamos obtener desde fuera de la clase.

94
00:05:51,840 --> 00:06:00,660
Entonces public static va a devolver la instancia, entonces del tipo conexión de vez singleton en Get

95
00:06:00,780 --> 00:06:08,160
instance es como lo típico se le suele llamar con ese nombre get install o guet instancia.

96
00:06:08,400 --> 00:06:12,690
De hecho, me está sugiriendo lo vamos a colocar guet instancia, pero arabismo.

97
00:06:14,670 --> 00:06:17,420
Listo y disolvemos con ratón.

98
00:06:17,820 --> 00:06:21,270
La instancia, que es estática, ahora está bien, pero ahora tenemos que crearla.

99
00:06:21,510 --> 00:06:23,910
Pero una sola vez, cómo la creamos una vez?

100
00:06:24,000 --> 00:06:29,160
Bueno, con un if preguntamos si instancia es igual a null.

101
00:06:30,210 --> 00:06:30,750
Perfecto.

102
00:06:30,840 --> 00:06:33,300
Es porque no existe la referencia y la tenemos que crear.

103
00:06:33,450 --> 00:06:35,020
De lo contrario el else.

104
00:06:35,130 --> 00:06:39,810
Por eso el ratón devuelve la instancia que ya está creada, que se creó la primera vez que se un poco

105
00:06:39,930 --> 00:06:41,220
el guet instancia.

106
00:06:41,520 --> 00:06:50,610
Entonces si anula la vamos a crear instancia igual new con el constructor de la clase conexión debe

107
00:06:50,610 --> 00:06:51,090
singleton.

108
00:06:53,250 --> 00:06:56,220
Pero recuerden, el constructor es privado private.

109
00:06:56,370 --> 00:07:02,280
Por lo tanto, se puede invocar desde dentro de la clase, desde dentro, desde el método get instance.

110
00:07:02,880 --> 00:07:05,490
Podemos llamar al método privado, pero no desde fuera.

111
00:07:05,550 --> 00:07:06,990
Ya está el patrón.

112
00:07:07,080 --> 00:07:09,330
Entonces restringimos la creación del objeto.

113
00:07:09,390 --> 00:07:15,060
Por ejemplo, en alguna otra clase en la clase con el método main y sólo la podemos crear de forma estática,

114
00:07:15,150 --> 00:07:17,870
de forma controlada, con el get instance.

115
00:07:18,120 --> 00:07:24,990
La primera vez se crea porque en NULL le asigna la referencia a la variable de instancia estática y

116
00:07:24,990 --> 00:07:25,890
después la devuelve.

117
00:07:26,070 --> 00:07:28,920
La segunda vez que se invoca el get instancia ya assistir.

118
00:07:28,950 --> 00:07:30,320
Por lo tanto va a ser distinto en URL.

119
00:07:30,390 --> 00:07:35,580
Esto acá no se ejecuta, simplemente retorna la instancia creada anteriormente.

120
00:07:35,670 --> 00:07:41,340
Recuerden que esto estático y como estamos dentro de la clase, simplemente utilizamos la variable estática,

121
00:07:41,400 --> 00:07:43,140
pero también se utiliza con el nombre de clase.

122
00:07:43,230 --> 00:07:45,630
Conexión debe singleton punto instancia.

123
00:07:46,050 --> 00:07:46,560
Recuerden.

124
00:07:48,230 --> 00:07:49,280
Por ejemplo, esto

125
00:07:52,070 --> 00:07:54,740
claro, porque estatico eso también estaría perfecto.

126
00:07:58,130 --> 00:07:59,750
Contra el света no es necesario.

127
00:07:59,920 --> 00:08:01,490
Bien, entonces, para resumir.

128
00:08:02,360 --> 00:08:05,090
Si es igual, Anul la creÃamos y la devolvemos.

129
00:08:05,390 --> 00:08:10,040
Y después, cuando se vuelva a llamar este método get instancia desde afuera, va a preguntar.

130
00:08:10,100 --> 00:08:11,630
Instancia es igual a null?

131
00:08:11,810 --> 00:08:13,130
No, no se cumple.

132
00:08:13,230 --> 00:08:14,090
Es distinta en NULL.

133
00:08:14,570 --> 00:08:19,610
Entonces simplemente va a devolver la instancia que ya existe, que ya se creó la primera vez.

134
00:08:19,910 --> 00:08:25,580
La primera vez que se invocó el quiete instancia se fijan los Septa Formas asegura que siempre se va

135
00:08:25,580 --> 00:08:27,060
a devolver la misma instancia.

136
00:08:27,080 --> 00:08:28,220
La primera que se crea.

137
00:08:28,420 --> 00:08:33,380
Bien, pero esto acá se puede colocar de una forma un poco elegante en vez colocar instancia igual.

138
00:08:33,470 --> 00:08:39,840
Anul podríamos colocar si la instancia no es instancia de conexión de Singleton.

139
00:08:40,520 --> 00:08:42,780
Entonces esto sería otra forma de quitar.

140
00:08:42,890 --> 00:08:53,990
Voy a dar un espacio, voy a negar mi acá paréntesis acá instancia menestras off conexión tbe singleton

141
00:08:54,110 --> 00:08:59,210
se fijan si la instancia no es una instancia de conexión, debe Singleton es porque null.

142
00:09:00,370 --> 00:09:02,860
Y la creamos será asignada, pero básicamente lo mismo.

143
00:09:02,920 --> 00:09:07,000
De hecho, Kṛṣṇa mismo nos dice reemplazar con un cheek null.

144
00:09:07,840 --> 00:09:08,320
Es lo mismo.

145
00:09:09,280 --> 00:09:10,000
Y es el patrón.

146
00:09:10,090 --> 00:09:10,870
Súper simple.

147
00:09:10,930 --> 00:09:12,340
Entonces ahora lo vamos a probar.

148
00:09:12,490 --> 00:09:13,810
Nos vamos a ir acá.

149
00:09:14,700 --> 00:09:15,930
Ejemplo Singleton.

150
00:09:16,200 --> 00:09:17,520
De hecho, lo vamos a parar con un Ford.

151
00:09:18,420 --> 00:09:23,970
Vamos a crear varias veces la instancia y la hemos de imprimir y vamos a ver si es igual o no..

152
00:09:26,010 --> 00:09:30,810
A partir en cero hasta 10 incrementadas.

153
00:09:33,770 --> 00:09:38,590
Conexión de vez singleton, conexión igual y de forma táctica.

154
00:09:39,360 --> 00:09:41,120
Conexión debe singleton.

155
00:09:41,220 --> 00:09:50,090
Punto G instancia esto shout o sotheby con. Debería imprimir siempre la misma referencia.

156
00:09:50,210 --> 00:09:50,720
Vamos a ver.

157
00:09:56,600 --> 00:09:58,880
Se fijan incluso al principio?

158
00:09:59,080 --> 00:10:01,340
Bueno, la primera vez que se invoca el método get instance.

159
00:10:01,430 --> 00:10:06,890
Si se fijan, aparece conectarnos a algún motor de base dato en la consola, pero sale una sola vez.

160
00:10:07,010 --> 00:10:13,190
Eso quiere decir que el constructor se llama una sola vez y se crea una sola instancia, y no por cada

161
00:10:13,190 --> 00:10:19,580
vez que se invoca el quet instance centraliza de forma global la creación del objeto en un único punto

162
00:10:19,670 --> 00:10:21,530
y crea una sola referencia.

163
00:10:21,710 --> 00:10:24,670
Siempre imprime pavimentaciÃn misma referencia.

164
00:10:24,890 --> 00:10:31,040
Recuerda que el tustin por defecto te compuesto por el nombre de la clase, el arroba y acá la ubicación

165
00:10:31,160 --> 00:10:37,970
o el puntero donde está guardado este objeto en la memoria, que es un valor o número hexadecimal,

166
00:10:38,120 --> 00:10:40,190
pero apunta siempre a la misma referencia.

167
00:10:41,120 --> 00:10:41,990
Es el mismo objeto.

168
00:10:42,470 --> 00:10:45,590
Incluso acá podríamos tener o crear otra.

169
00:10:45,830 --> 00:10:47,810
De hecho, voy a copiar esto tomismo.

170
00:10:51,820 --> 00:10:53,340
Vamos a colocar dos.

171
00:10:55,900 --> 00:10:56,740
De K3.

172
00:11:00,090 --> 00:11:03,630
Bullían ve uno igual.

173
00:11:03,750 --> 00:11:08,280
Compramos con C es igual A con dos.

174
00:11:10,800 --> 00:11:16,730
De hecho, acá voy a colocar paréntesis, paréntesis a con lo tenemos dentro.

175
00:11:17,100 --> 00:11:23,010
Por lo tanto no existe fuera del foro, entonces lo que podríamos hacer es colocar esto afuera.

176
00:11:23,610 --> 00:11:26,820
Permiso, lo voy a cortar, lo voy a pegar acá.

177
00:11:27,570 --> 00:11:33,090
Vamos a colocar nul, lo inicializamos y acá con con igual.

178
00:11:33,330 --> 00:11:35,190
A ese entonces lo puedo comparar.

179
00:11:35,700 --> 00:11:40,770
Se fijan Sotheby B1 Vamos a ver.

180
00:11:45,710 --> 00:11:46,760
Bueno, sigamos comparando.

181
00:11:47,510 --> 00:11:50,940
De hecho, acá vamos a colocar otro paréntesis interno.

182
00:11:52,120 --> 00:11:56,750
Aunt con dos si es igual a con 3.

183
00:11:59,200 --> 00:12:03,220
Pero antes sepa que se me ha ordenado todo debería ctro completamente.

184
00:12:03,340 --> 00:12:10,030
Incluso podría comparar el con con el con 3, ya que compramos con 2 con el con el contó con encontré.

185
00:12:10,060 --> 00:12:14,970
Entonces faltaría por acá lo de copiar lo pegamos acá.

186
00:12:16,580 --> 00:12:18,830
De cacería con. con el con 3.

187
00:12:20,530 --> 00:12:21,130
Vamos a ver.

188
00:12:24,590 --> 00:12:29,120
Thru Son todo iguales, porque la alimentación y de eso se trata este patrón de referencia.

189
00:12:29,270 --> 00:12:29,580
Bien.

190
00:12:29,690 --> 00:12:30,260
Nada más.

191
00:12:30,350 --> 00:12:34,430
Recuerden, es un patrón creacional porque crea un objeto o una instancia.

192
00:12:34,550 --> 00:12:38,030
Continuamos la siguiente clase con otro patrón creacional.

193
00:12:38,150 --> 00:12:38,900
Nos vemos.
