You are on page 1of 12

Universidad: Andrés Bello

Carrera: Ing en Computación e Informatica


Fecha: 30-12-2018
Profesor: Richard Rodriguez
Integrantes: Gonzalo Solís Sepúlveda, Pablo Moreira Rojas
Índice

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

Veremos distintos tipos de patrones de diseños del tipo Creación, Estructural y


comportamiento, como aplicarlos e implementarlos de la forma correcta. También
veremos su diagrama de fluyo en UML.

Fundamento

Un patrón de diseño es un modelo creado y estandarizado que aporta una solución a un


problema ya identificado agrupando el código de una forma que pueda ser reutilizable y
de fácil mantenimiento a lo largo del tiempo. Los patrones de diseño hicieron su primera
aparición en el año 1977, gracias a Christopher Alexander, refiriéndose a que era un
problema que se repetía en nuestro entorno, de tal manera que se podía aplicar una
solución puntual, para así poder usarla tantas veces se diera dicho problema. Cabe
destacar que cada día hay nuevos patrones de diseño que atacan un problema puntual, la
cual cada uno de estos tiene un labor especifico a solucionar.

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

Cuando se debe crear una instancia de un objeto el cual se trabajará en el momento


(Inicialización y creación de objetos).

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:

- Reducir el espacio en nombre


- Controla el acceso a una instancia única
- Puede mejorar la performance, ya que evita los múltiples espacios de memoria de
usuarios diferentes que ocupan la misma información

Desventajas:

- Se puede crear un cuello de botella en operaciones seriales cuando la demanda


es muy alta
- Problemas en multihilos (Si la forma de acceder es asíncrona)

Participantes:

- Client (ClienteSingleton): Obtiene la instancia del patrón


- Singleton (PatronSingleton): Clase que implementa Singleton, la cual tendrá una
instancia durante toda la vida de ejecución de la aplicación

Estructura Singleton:
Abstract Factory

Primero podremos en contexto el Patrón de Diseño “Factory”. Su objetivo es devolver


instancias por medio de algún identificador, por ejemplo: Si se necesita una instancia
llamada Objeto, se le dice a la Fábrica que necesitamos una instancia de ese objeto
solicitado.

En el Abstract Factory está enfocado en agrupar un conjunto de clases que tienen un


funcionamiento en común que se les declara como familias, pero que su implementación
es distinta y que son creadas mediante una fábrica.

Se utiliza cuando se necesita trabajar con distintas plataformas manteniendo la estructura


y compatibilidad, cuando se necesita controlar la creación de objetos mediante una
interfaz común.

Ventaja:

- Separa la clase de implementación, encapsula la responsabilidad, controla objetos


- Fácil intercambio de familia de productos
- Productos consistentes

Desventajas:

- Es engorroso volver a crear una familia nueva.

Participantes:

- Client: Es quien ejecutará Patrón.


- AbstractProduct (IBebidaAlcoholica – IbebidaNoAlcoholica): Es una interfaz
que define la estructura de los objetos para crear familias
- ConcreteProduct (Vino – Jugo – etc): Clases que heredan de AbstracProduct,
con el fin de implementar familias de objetos concretos
- ConcreteFactory (BebicaAlcoholicaFabrica – BebidaNoAlcoholicaFabrica):
Representa la fábrica concreta, que sirve para crear la instancia de todas las
clases Familia
- AbstractFactory(IFabricaAbstracta): Define la estructura de la fábrica y debe
proporcionar método para cada clase de la familia.
Estructura AbstractFactory:
Patrón Estructural

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:

- Si muchos clientes acceden a un subconjunto diferente de funcionalidades, se


podría reducir a utilizar una pequeña parte de la fachada

Participantes:

- IFacade (IFacadePago): Interfaz de alto nivel y oculta la complejidad de


interactuar con varios sistemas
- Client (ClienteFacade): Desencadena interacción con Facade
- DefaultFacadeImpl (FacadePago): Representa la implementación de IFacade y
se encarga de la comunicación con los Subsistemas
- Subsystem (PagoDebito-PagoCredito): Subsistema, que exponen interfaces
para comunicarse con ellos.
Estructura Facade:
Patrón Comportamiento

La forma en que cómo se relaciona el objeto y la clasex

Patron Strategy

Define algoritmos que se pueden encapsular e intercambiarlos. Los algoritmos son


independientes de los clientes quienes lo usan, permite establecer en tiempo de ejecución
el rol del comportamiento de una clase. Este patrón se basa en el polimorfismo, que
implementa comportamientos que podrán ser intercambiados durante la ejecución del
programa. Con lo anterior, se puede lograr que un objeto pueda tener un comportamiento
distinto según la estrategia establecida.

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:

- Enfatizar en la reutilización de algoritmo y comportamiento


- Encapsulamiento de algoritmo en clases separadas
- Eliminar costosas definiciones de comportamiento multicondicionales
- Ofrecer distintas implementaciones del mismo comportamiento

Desventajas:

- Cliente debe tener conocimiento de cada estrategia y así elegir la correcta


- Se puede dar un aumento en el número de objetos del sistema.

Participantes:

- Strategy (IEstrategia): Interfaz común a los algoritmo soportados


- StrategyConcrete (CompeticionInfantil –CompeticionAdulto): Implementa
algoritmo y utiliza interfaz Strategy
- Context (Contexto): Encapsula la estrategia (Strategy).
Estructura Strategy:
Conclusión

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

Se recomienda tener nociones de programación orientada a objetos, como: Interface,


Herencia, Colaboración de clases, etc.
Bibliografía

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

Introduccion_patrones_diseño_final-portada – autor Oscar Javier Blancarte Iturrade

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)

You might also like