Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ficha: 254
Trabajo:
1. Para la siguiente captura realizar la siguiente investigación a los campos de texto que están
de color rojo:
¿Qué es?
Conocido como instancia única, que permite restringir la creación de objetos pertenecientes a una
clase o el valor de un tipo a un único objeto.
Utilidad
Su intención es garantizar que una clase solo tenga una instancia y proporciona un punto de
acceso global.
¿Dónde se utiliza?
Se utiliza cuando por alguna razón se necesite que exista solo una instancia (un objeto) de una
determinada clase.
Dicha clase se creará de forma que tenga una propiedad estática y un constructor privado, así
como un método público estático que será el encargado de crear la instancia (cuando no exista) y
guardar una referencia a la misma en la propiedad estática (devolviendo ésta).
Ejemplo:
Al ejecutarlo siempre obtendremos lo siguiente:
EXPLICACIÓN:
Cada vez que se procesa el bucle for se realiza una llamada al método getInstancia() de la clase
Coche, devolviéndose siempre una misma instancia (un sólo objeto) de dicha clase (que será
creada la primera vez que se llame a dicho método).
FACTORY METHOD:
¿Qué es?
Consiste en utilizar una clase constructora abstracta con unos cuantos métodos definidos.
Utilidad
Su intención es que cuando definamos una clase a partir de la que se crearan objetos pero sin
saber de que tipo son, siendo otras subclases las encargadas de decidirlo.
¿Dónde se utiliza?
Ejemplo:
Al ejecutarlo obtendríamos como resultado:
EXPLICACIÓN:
ABSTRACT FACTORY:
¿Qué es?
Define una interfaz para crear todos los productos, pero deja la propia creación de productos para
las clases de fábrica concretas.
Utilidad
Este patrón resulta útil en casos en los que necesitemos crear familias de objetos relacionados o
dependientes entre sí, sin especificar sus clases concretas.
¿Dónde se utiliza?
Este patrón se puede aplicar cuando: Un sistema debe ser independiente de cómo sus objetos son
creados. ... Se necesita reforzar la noción de dependencia mutua entre ciertos objetos.
Ejemplo:
Al ejecutarlo obtendremos el siguiente resultado:
EXPLICACIÓN:
BRIDGE
¿Qué es?
Utilidad
Supongamos que tenemos una clase abstracta en la que se define un método que deberá
implementar cada clase que herede de ella: ¿cómo haríamos si una clase hija necesitase
implementarlo de forma que realizase acciones diferentes dependiendo de determinadas
circunstancias?
¿Dónde se utiliza?
En dichos casos nos resultaría útil el patrón Bridge (puente) ya que 'desacopla una abstracción' (un
método abstracto) al permitir indicar (durante la ejecución del programa) a una clase qué
'implementación' del mismo debe utilizar (qué acciones ha de realizar).
Ejemplo:
Al
ejecutarlo
COMPOSITE
Este útil patrón permite crear y manejar estructuras de objetos en forma de árbol, en las que un
objeto puede contener a otro(s).
En este punto cabe aclarar que las estructuras de este tipo se componen de nodos (un objeto que
a su vez contiene otros objetos) y Hojas (objetos que no contienen otros), y que ambos comparten
una misma Interfaz que define métodos que deben implementar.
Al ejecutarlo obtendríamos como resultado:
EXPLICACIÓN:
FACADE (FACHADA)
Este patrón nos permite acceder a un subsistema de forma más sencilla.
Para entenderlo mejor veamos un ejemplo sencillo en el que NO utilizaremos este patrón. Se
trata de simular el proceso a realizar para arrancar un coche.
EXPLICACIÓN:
Cómo puedes observar, en este caso el programa principal (Main) es el encargado de acceder a
cada uno de los objetos del subsistema creado con el objetivo de realizar el proceso de arrancar el
coche.
TEMPLATE METHOD
Este sencillo patrón resulta útil en casos en los que podamos implementar en una clase abstracta
el código común que será usado por las clases que heredan de ella, permitiéndoles que
implementen el comportamiento que varía mediante la reescritura (total o parcial) de
determinados métodos.
La diferencia con la forma común herencia y sobreescritura de los métodos abstractos estriba en
que la clase abstracta contiene un método denominado 'plantilla' que hace llamadas a los que han
de ser implementados por las clases que hereden de ella.
En ciertos casos será necesario que algunas subclases sobrescriban determinados métodos de la
clase padre para agregar determinadas funcionalidades.
Strategy
Podemos hacer uso de este patrón para crear un objeto que pueda comportarse de formas
diferentes (lo cual se definirá en el momento de su instanciación o creación).
Al ejecutarlo obtendríamos como resultado:
EXPLICACIÓN:
Command
Este patrón resulta útil en escenarios en los que se han de enviar peticiones a otros objetos
sin saber qué operación se ha de realizar, y ni tan siquiera quién es el receptor de dicha
petición.
Dicho de otro modo: tenemos varios objetos que realizan acciones similares de forma
diferente, y queremos que se procese la adecuada dependiendo del objeto solicitado.
El Invocador no sabe quién es el Receptor ni la acción que se realizará, tan sólo invoca
un Comando que ejecuta la acción adecuada:
Al ejecutarlo obtendríamos como resultado:
EXPLICACIÓN:
EXPLICACIÓN:
Al inicio del programa se crea el objeto que será observado así como tres objetos
observadores del anterior, que se agregan a la lista del observado.
En este otro ejemplo mostramos una forma más recomendable de utilizar este patrón.
Referencias:
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiI-8TD4-
7rAhVyu1kKHZk8A5QQtwIwAHoECAQQAQ&url=https%3A%2F%2Fdevexperto.com%2Fpatrones-
de-diseno-software%2F&usg=AOvVaw3ljy1gk5C1VZmHjx-PNERC
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiI-8TD4-
7rAhVyu1kKHZk8A5QQFjABegQIAhAB&url=https%3A%2F%2Fes.wikipedia.org%2Fwiki%2FPatr
%25C3%25B3n_de_dise%25C3%25B1o&usg=AOvVaw07ZeCHkNzX02aEPtw6GoVv
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiI-8TD4-
7rAhVyu1kKHZk8A5QQFjACegQIAxAB&url=https%3A%2F%2Fmedium.com%2Fall-you-need-is-
clean-code%2Fpatrones-de-dise%25C3%25B1o-
b7a99b8525e&usg=AOvVaw1FSJEZ88H11GAXpOrW5APb
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiI-8TD4-
7rAhVyu1kKHZk8A5QQFjALegQIDhAB&url=https%3A%2F%2Finformaticapc.com%2Fpatrones-de-
diseno%2F&usg=AOvVaw39SBginemCNhPMCEbS7TRr
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiI-8TD4-
7rAhVyu1kKHZk8A5QQFjAWegQICxAB&url=https%3A%2F%2Fprofile.es%2Fblog%2Fpatrones-de-
diseno-de-software%2F&usg=AOvVaw1XG-ETXY6G7MAH0pXumEyk