Professional Documents
Culture Documents
Resumen……………………………………..……………………………………………………3
Fundamento……………………………….….…………………………………………………...3
Objetivos…………………………….…….………………………………………………………3
Patrones Creacionales…………….…….………………………………………………………4
Patrón Singleton……………………….…………………………………………………………4
Abstract Factory………………………….…………………………………………………….…5
Patrones Estructural……………………..……………………………………….…………...…7
Patrón Facade……………………...…………………………………………….………………7
Patrones Comportamiento……………..………………………………………….……………9
Patrón Strategy……………………...…………………………………………………...………9
Conclusión…….……………………...……………………………………………….…………11
Recomendaciones……………………...……………………………………………….………11
Bibliografía…….……………………...…………………………………………………………12
Resumen
Fundamento
Por lo general los patrones de diseño pueden confundirse con los patrones de
arquitectura. La principal y gran diferencia está en que los patrones de diseño están
hechos para resolver casos en concreto del software, y el patrón de arquitectura va
enfocado a la comunicación de componentes de un software (Como se estructura y
comunica el sistema), y este puede incluir a su vez varios patrones de diseño (Ejemplo de
Patrón de arquitectura: MVC)
Otra funcionalidad de los patrones de diseño es que nos brinda una estructura definida y
ordenada, así se presenta un código organizado y de fácil lectura para el programador
que tenga que mantener y reestructurar el código en un futuro requerimiento.
Objetivos
El objetivo de este informe, es poder ver y analizar los patrones de diseño, aprendiendo a
implementarlos según el caso dado en la programación.
Patrones Creacionales
Patrón Singleton:
La función del patrón Singleton es limitar el número de instancias de una clase tan solo a
uno. Si más de un objeto intenta de usar esta instancia compartirá la que ya está creada
con anterioridad (Proporciona un punto de acceso global). Nos sirve cuando muchos
clientes necesitan apuntar a un mismo elemento y se quiere que no haya más de una
instancia a ese elemento.
La instancia tiene que ser estática, ya que será una instancia de la clase y no del objeto,
con esto quiere decir que vivirá durante la ejecución. También hay ocasiones que
aplicaciones trabajan con multihilos y es un problema, ya que si dos hilos intentan de
crear una instancia al mismo tiempo, estas se crearán y se rompe el propósito del patrón.
Para lo anterior será necesario crear un método privado encargado de crear únicamente
la instancia, el cual esté protegido y con el modificador de acceso synchronized (Evita que
2 hilos creen una instancia al mismo tiempo)
Ventajas:
Desventajas:
Participantes:
Estructura Singleton:
Abstract Factory
Ventaja:
Desventajas:
Participantes:
Ayuda a crear interconexiones entre los distintos tipos de objetos. Nos dice cómo utilizar
estructuras de datos complejos a partir de elementos simples. (Separan la interfaz de la
implementación)
Patrón Facade
Este patrón sirve para ocultar la complejidad, simplificando el sistema desde el punto de
vista del cliente, proporcionando una interfaz unificada para un conjunto de subsistema y
se define una interfaz a más alto nivel, realizando la comunicación de los subsistemas.
Sirve para cuando se requiere interactuar con varios subsistemas, para efectuar una
operación concreta. El cliente tiene un punto de acceso fácil, sin que él sepa lo que hay
por dentro.
Se utiliza cuando se quiere construir interfaces de alto nivel para los usuarios, también
cuando es difícil la interacción con un conjunto de subsistemas, ya que, es necesario
conocer a los objetos para tener una comunicación mutua con cada sistema.
Ventajas:
- Para realizar cambios en las clases de los subsistemas, solo hay que hacer
cambios en la interfaz
- Se reducen las dependencias
- Al separar cliente de los componentes del subsistema, se reduce el número de
objetos
Desventaja:
Participantes:
Patron Strategy
Se puede usar cuando se requiere que el comportamiento de una clase pueda cambiar
según el estado de la aplicación o cuando un conjunto de clases se diferencia solo por su
comportamiento.
Ventajas:
Desventajas:
Participantes:
En base a lo visto, podemos decir que los patrones de diseño tienen una gran utilidad hoy
en día, ya que nos permite armar la estructura de nuestro código de una forma transversal
a quien si conoce este tipo de forma de crear código.
Como se pudo presenciar, hay distintos patrones de diseños, para distintos tipos de
casos, los cuales nos servirá para crear un código ordenado y fácil de identificar,
ocupando los distintos pilares de la programación orientada a objetos (Abstracción,
Herencia, Relaciones, Encapsulamiento)
Recomendaciones
https://www.youtube.com/watch?v=cwfuydUHZ7o&list=PLvimn1Ins-
41Uiugt1WbpyFo1XT1WOquL (Mitocode,2018)
https://scielo.conicyt.cl/scielo.php?script=sci_arttext&pid=S0718-07642013000300012
(Carlos A. Guerrero, Johanna M. Suárez* y Luz E. Gutiérrez, 2013)
https://social.msdn.microsoft.com/Forums/es-ES/9219cf71-bbc1-4a35-9f94-
baf51c57fef8/patrn-de-arquitectura-o-patrn-de-diseo?forum=netfxwebes
http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/202
https://infow.wordpress.com/2013/02/11/gof-patrones-de-diseno-iii-abstract-factory/
https://courses.cs.washington.edu/courses/cse403/11sp/lectures/lecture08-uml1.pdf
http://lineadecodigo.com/patrones/patron-abstract-factory/
http://migranitodejava.blogspot.com/2011/06/facade.html
https://www.ecured.cu/Facade
http://codigolinea.com/2015/03/19/strategy-pattern-patron-estrategia/
https://es.wikipedia.org/wiki/Strategy_(patr%C3%B3n_de_dise%C3%B1o)