Bienvenidos.
Continuamos con los patrones de diseño.
Bien, pero partamos con lo que son los patrones.
Para qué nos sirven?
Son fragmentos de código, algoritmo que nos permiten resolver algún problema cotidiano que se repite
una y otra vez en el desarrollo de nuestras aplicaciones.
Por supuestos orientÃ objeto porque son 100 por ciento utilizando clases, objetos, uso de interfaces,
por supuesto, y buenas prácticas.
Es lo más importante.
Entonces resuelven un problema común y corriente en la programación que se repite.
Pero, sin embargo, estos patrones de diseño no son nuevos, sino que se han ido desarrollando desde
la década del 80 y en los 90 se popularizan bastante.
De hecho, se cree un libro que super conocido, super famoso, escrito por cuatro autores que se le
conoce como el libro de patrones, diseño orientado objeto de la banda de los 4 de la banda.
Es porque son 4 actores y por eso se reconoce como patrones de diseños GOF, G o F, que las siglas
de Going o For, es decir, la banda los 4.
Eric Gama, uno de los autores, Richard el otro Raff Johnson y también Tallón Blicidad y agrupan recogen
23 patrones diseños comunes.
Bueno, por supuesto, en este curso no vamos a ver todo porque da para un curso completo, pero vamos
a ver los 5 principales.
Lo más importante y hay tres categorías están los patrones creacional, tales los estructurales y lo
de comportamiento.
Vamos a partir con el más típico, más básico, también muy utilizado.
El singleton, que es creacional, no permite crear una sola instancia de una clase.
Es decir, amarramos nuestro diseño, nuestra clase, de tal forma que nos permita siempre crear una
sola referencia, una instancia que compartida para toda la aplicación.
Típicamente se utiliza en base atto reutilizar la misma conexión durante y a lo ancho de nuestra aplicación,
pero también se podría manejar un pull, un puzzle, conexiones, algunas conexiones, no solamente
una, sino un grupo.
Comencemos entonces.
Vamos a cerrar todo esto lo que tenemos.
Vamos a crear un nuevo proyecto.
Como siempre.
Siguiente siguiente le vamos a llamar patrones diseño, pero en vez de la ñ n diseño, recuerden que
la Ñ es un caracter especial y no se recomienda como nombre de directorio ni de archivo o simplemente
patrones como quieran.
Bien, finalizar, acá lo tenemos.
Vamos a crear un.
Patrones, punto, ejemplos o mejor, los patrones y el nombre del patrón, por ejemplo, Singleton,
de tal forma vamos a tener un РАМКАХ por cada patrón, el primero Singleton perfecto y listo a puse
crear nueva clase porque en vez de colocar package puse clase.
Entonces colocamos el package y el nombre de la clase punto en mayúscula.
Ejemplo Singleton.
Como siempre con el método Main.
Claro, porque me equivoqué.
En vez de colocar nuevo package acá, por ejemplo acá nuevo package puse nuevo ya class.
Entonces por eso coloqué el nombre completo con el package.
Pero lo mismo acá tengo el package completo y la clase con el método main.
Listo.
Ahí tenemos.
Bien.
Pero esta clase para probar nuestro patrón.
Entonces voy a crear una clase con el patrón diseño.
Entonces, ahora sí crea una clase de vamos a llamar Conexión Bede de base dato singleton conexión vedes
singleton bebé de base dato incluso puede colocar de la mayúscula esto nombre clase.
Entonces la idea tener una sola instancia de esta clase, cómo la podemos Zamarra?
Bueno, primero tenemos que crear un constructor, pero no se puede instancia con el new, porque si
creamos un objeto con el nuevo, vamos a poder crear instancias cuantas veces queramos.
Y la idea restringir el constructor.
Entonces lo primero es que sea private.
Eso es lo primero constructor privado.
No puedo crear una instancia desde fuera con el constructor.
Entonces conexión conexión de vez singleton el nombre de la clase
se fijan en lo primero.
Shout Vamos a imprimir acá un mensaje simulando alguna conexión, por ejemplo, conectándose a algún
motor de auto.
Bueno, todavía no hemos visto nada de JDBC de base datos de conexiones.
Después vamos a ver y de hecho después lo podríamos implementar con este patrón.
Por ahora solamente lo vamos como a simular.
Pero claro, dentro de este constructor debería estar toda la implementación, nuestro código para conectarnos
por ejemplo a SQL, a PostgreSQL o alabarse, dato que queramos.
Bien, entonces, primero el constructor privado.
Primera regla.
La segunda, un método estático tiene que ser estático que nos devuelva la instancia.
Pero la única instancia o referencia de esta clase donde vamos a guardar esta referencia en un atributo
estático.
Entonces por acá vamos a tener un atributo.
Este atributo tiene que ser privado también o también protegido?
Private Static es importante que es estático porque lo podemos reutilizar desde cualquier parte.
Conexión braceando.
Es decir.
Que contenga el tipo o el objeto de esta clase.
Entonces.
El mismo tipo de la clase.
Acá puso un espacio.
Además.
Le vamos a llamar instancia de instancia.
Se fijan?
Ahí tenemos el atributo estático que contiene la referencia y le vamos a llamar instancia.
Entonces vamos a tener una sola instancia de esta clase y vamos a guardar acá.
Ahora, cómo la obtenemos?
Con un método estático, porque el atributo estático.
Bueno, este método tiene que ser público para que lo podamos obtener desde fuera de la clase.
Entonces public static va a devolver la instancia, entonces del tipo conexión de vez singleton en Get
instance es como lo típico se le suele llamar con ese nombre get install o guet instancia.
De hecho, me está sugiriendo lo vamos a colocar guet instancia, pero arabismo.
Listo y disolvemos con ratón.
La instancia, que es estática, ahora está bien, pero ahora tenemos que crearla.
Pero una sola vez, cómo la creamos una vez?
Bueno, con un if preguntamos si instancia es igual a null.
Perfecto.
Es porque no existe la referencia y la tenemos que crear.
De lo contrario el else.
Por eso el ratón devuelve la instancia que ya está creada, que se creó la primera vez que se un poco
el guet instancia.
Entonces si anula la vamos a crear instancia igual new con el constructor de la clase conexión debe
singleton.
Pero recuerden, el constructor es privado private.
Por lo tanto, se puede invocar desde dentro de la clase, desde dentro, desde el método get instance.
Podemos llamar al método privado, pero no desde fuera.
Ya está el patrón.
Entonces restringimos la creación del objeto.
Por ejemplo, en alguna otra clase en la clase con el método main y sólo la podemos crear de forma estática,
de forma controlada, con el get instance.
La primera vez se crea porque en NULL le asigna la referencia a la variable de instancia estática y
después la devuelve.
La segunda vez que se invoca el get instancia ya assistir.
Por lo tanto va a ser distinto en URL.
Esto acá no se ejecuta, simplemente retorna la instancia creada anteriormente.
Recuerden que esto estático y como estamos dentro de la clase, simplemente utilizamos la variable estática,
pero también se utiliza con el nombre de clase.
Conexión debe singleton punto instancia.
Recuerden.
Por ejemplo, esto
claro, porque estatico eso también estaría perfecto.
Contra el света no es necesario.
Bien, entonces, para resumir.
Si es igual, Anul la creÃamos y la devolvemos.
Y después, cuando se vuelva a llamar este método get instancia desde afuera, va a preguntar.
Instancia es igual a null?
No, no se cumple.
Es distinta en NULL.
Entonces simplemente va a devolver la instancia que ya existe, que ya se creó la primera vez.
La primera vez que se invocó el quiete instancia se fijan los Septa Formas asegura que siempre se va
a devolver la misma instancia.
La primera que se crea.
Bien, pero esto acá se puede colocar de una forma un poco elegante en vez colocar instancia igual.
Anul podríamos colocar si la instancia no es instancia de conexión de Singleton.
Entonces esto sería otra forma de quitar.
Voy a dar un espacio, voy a negar mi acá paréntesis acá instancia menestras off conexión tbe singleton
se fijan si la instancia no es una instancia de conexión, debe Singleton es porque null.
Y la creamos será asignada, pero básicamente lo mismo.
De hecho, Kṛṣṇa mismo nos dice reemplazar con un cheek null.
Es lo mismo.
Y es el patrón.
Súper simple.
Entonces ahora lo vamos a probar.
Nos vamos a ir acá.
Ejemplo Singleton.
De hecho, lo vamos a parar con un Ford.
Vamos a crear varias veces la instancia y la hemos de imprimir y vamos a ver si es igual o no..
A partir en cero hasta 10 incrementadas.
Conexión de vez singleton, conexión igual y de forma táctica.
Conexión debe singleton.
Punto G instancia esto shout o sotheby con. Debería imprimir siempre la misma referencia.
Vamos a ver.
Se fijan incluso al principio?
Bueno, la primera vez que se invoca el método get instance.
Si se fijan, aparece conectarnos a algún motor de base dato en la consola, pero sale una sola vez.
Eso quiere decir que el constructor se llama una sola vez y se crea una sola instancia, y no por cada
vez que se invoca el quet instance centraliza de forma global la creación del objeto en un único punto
y crea una sola referencia.
Siempre imprime pavimentaciÃn misma referencia.
Recuerda que el tustin por defecto te compuesto por el nombre de la clase, el arroba y acá la ubicación
o el puntero donde está guardado este objeto en la memoria, que es un valor o número hexadecimal,
pero apunta siempre a la misma referencia.
Es el mismo objeto.
Incluso acá podríamos tener o crear otra.
De hecho, voy a copiar esto tomismo.
Vamos a colocar dos.
De K3.
Bullían ve uno igual.
Compramos con C es igual A con dos.
De hecho, acá voy a colocar paréntesis, paréntesis a con lo tenemos dentro.
Por lo tanto no existe fuera del foro, entonces lo que podríamos hacer es colocar esto afuera.
Permiso, lo voy a cortar, lo voy a pegar acá.
Vamos a colocar nul, lo inicializamos y acá con con igual.
A ese entonces lo puedo comparar.
Se fijan Sotheby B1 Vamos a ver.
Bueno, sigamos comparando.
De hecho, acá vamos a colocar otro paréntesis interno.
Aunt con dos si es igual a con 3.
Pero antes sepa que se me ha ordenado todo debería ctro completamente.
Incluso podría comparar el con con el con 3, ya que compramos con 2 con el con el contó con encontré.
Entonces faltaría por acá lo de copiar lo pegamos acá.
De cacería con. con el con 3.
Vamos a ver.
Thru Son todo iguales, porque la alimentación y de eso se trata este patrón de referencia.
Bien.
Nada más.
Recuerden, es un patrón creacional porque crea un objeto o una instancia.
Continuamos la siguiente clase con otro patrón creacional.
Nos vemos.