Está en la página 1de 30

Desarrollo de

aplicaciones II
ING. EDER SANTIAGO DANIEL
Unidad I - Patrones de diseo
Que es un patrn?
Conjunto de elementos que se repiten de una manera predecible.
Que es un patrn de diseo?
Un esquema que se usa para solucionar un problema.
Base para la bsqueda de soluciones a problemas comunes en el
desarrollo de software.
Cada patrn describe un problema que ocurre una y otra vez en
nuestro entorno y describe tambin el ncleo de la solucin al
problema, de forma que puede utilizarse un milln de veces sin
tener que hacer dos veces lo mismo.

Para que se utilizan.
Proporcionar catlogos de elementos reusables en el diseo de
sistemas software.
Evitar la reiteracin en la bsqueda de soluciones a problemas ya
conocidos y solucionados anteriormente.
Formalizar un vocabulario comn entre diseadores.
Estandarizar el modo en que se realiza el diseo.
Facilitar el aprendizaje de las nuevas generaciones de diseadores
condensando conocimiento existente.
Como deben de ser.
Efectivos resolviendo problemas similares en ocasiones anteriores.
Reutilizables y aplicables a diferentes problemas de diseo en
distintas circunstancias.
Los patrones NO pretenden.
Imponer ciertas alternativas de diseo frente a otras.
Eliminar la creatividad inherente al proceso de diseo.
Es obligatorio utilizar los patrones.
No, es aconsejable en el caso de tener el mismo problema o similar
que soluciona el patrn.
Abusar o forzar el uso de los patrones puede ser un error.
Antipatrn.
Qu es?
Un antipatrn de diseo es un patrn de diseo que conduce a una
mala solucin para un problema.
Evitar los antipatrones siempre que sea posible, requiere su
reconocimiento e identificacin dentro del ciclo de vida del software.

Patron de diseno Buen Camino.



Antipatron de diseno Mal Camino.
Por qu debo usar patrones?
Los patrones de diseo son soluciones bien pensadas a problemas
conocidos de programacin.
Muchos programadores han padecido de estos problemas antes y
han utilizado estas soluciones para ponerles remedio.
Tipos de patrones.
De creacin
Resuelven problemas relacionados con la creacin de instancias
de objetos.
De estructura
Se centran en problemas relacionados con la forma de estructurar
las clases.
De comportamiento
Permiten resolver problemas relacionados con el comportamiento
de la aplicacin, normalmente en tiempo de ejecucin.
De creacin.
Abstract Factory
Proporciona una clase que delega la creacin de una o ms clases
concretas con el fin de entregar objetos especficos.
Factory method
Define una interfaz para crear un objeto, pero deja que sean las
subclases quienes decidan qu clase instanciar. Permite que una
clase delegue en sus subclases la creacin de objetos.
De creacin.
Singleton
Garantiza que una clase solo tenga una instancia, y proporciona
un punto de acceso global a ella.
Prototype
Crear objetos mediante clonacin basados en una plantilla de
objetos existentes .
Builder
Centraliza el proceso de creacin de un objeto en un nico punto,
de tal forma que el mismo proceso de construccin pueda crear
representaciones diferentes.
De estructura.
Adapter
Permite trabajar juntas a clases con interfaces diferentes a travs
de la creacin de un objeto comn mediante el que puedan
comunicarse e interactuar.
Bridge
Define una estructura de objeto abstracto con independencia de
la implementacin con el fin de limitar el acoplamiento.
Composite
Facilita la creacin de jerarquas de objetos donde cada objeto se
puede tratar de forma independiente o como un conjunto de
objetos anidados a travs de la misma interfaz.
De estructura.
Decorator
Aade dinmicamente funcionalidad a un objeto. Permite no tener que crear
subclases incorporando la nueva funcionalidad, sino otras que la implementan
y se asocian a la primera.
Facade
Proporciona una interfaz unificada para un conjunto de interfaces de un
subsistema. Define una interfaz de alto nivel que hace que el subsistema sea
mas fcil de usar.
Flyweight
Facilita la reutilizacin de muchos objetos de grano fino, haciendo mas
eficiente la utilizacin de grandes cantidades de objetos.
Proxy
Una clase que permite operar con un objeto de otra clase exponiendo una o
mas de sus interfaces.
De comportamiento
Chain of responsibility
Evita acoplar el emisor de una peticin a su receptor dando a mas de un
objeto la posibilidad de responder a una peticin.
Command
Permite solicitar una operacin a un objeto sin conocer realmente el contenido
de esta operacin, ni el receptor real de la misma. Para ello se encapsula la
peticin como un objeto, con lo que adems se facilita la parametrizacin de
los mtodos.
Interpreter
Define una representacin para su gramtica junto con un interprete del
lenguaje.
Iterator
Define una interfaz que declara los mtodos necesarios para acceder
secuencialmente a un grupo de objetos de una coleccin.
De comportamiento
Mediator
Define un objeto que encapsula la manera en que interactuan un
conjunto de objetos entre ellos.
Memento
Su finalidad es almacenar el estado de un objeto (o del sistema
completo) en un momento dado de manera que se pueda
restaurar en ese punto de manera sencilla.
Observer
Define una dependencia del tipo uno-a-muchos entre objetos, de
manera que cuando uno de los objetos cambia su estado, notifica
este cambio a todos los dependientes.
De comportamiento
State
Se utiliza cuando el comportamiento de un objeto cambia dependiendo del
estado del mismo.
Strategy
Permite mantener un conjunto de algoritmos de entre los cuales el objeto
cliente puede elegir aquel que le conviene e intercambiarlo dinmicamente
segn sus necesidades.
Template method
Define dentro de una operacin de una superclase, los pasos de un algoritmo,
de forma que todos o parte de estos pasos son redefinidos en las subclases
herederas de la citada superclase.
Visitor
Permite aplicar una o mas operaciones a un conjunto de objetos en tiempo de
ejecucin, desacoplando dichas operaciones de la estructura del objeto.
Actividad 1.
Complementar la informacin de los patrones de diseo tomando
en consideracin lo siguiente.
Principales caractersticas.
Ventajas
Desventajas
Cuando puede ser utilizado
Modelo Vista
Controlador
MVC
El patrn de diseo Modelo-Vista-Controlador fue aportado
originariamente por el lenguaje de programacin SmallTalk.
Consiste en dividir una aplicacin en tres componentes: Modelo,
Vista y Controlador.
Se basa en la separacin de responsabilidades ya que cada una
de las partes se encarga de un aspecto especfico y no interfiere
con el de las otras.

Patrn MVC: Modelo
Representa las capas de lgica de negocios y
persistencia de datos de la aplicacin.
Est formada por todos los objetos de negocio
que soportan los procesos propios del dominio
de la aplicacin.
Se encarga del acceso a los datos para realizar
consultas, eliminaciones, inserciones,
actualizaciones y almacenarlos en un medio
persistente, como por ejemplo una base de
datos, un archivo de texto, XML, etc.
Patrn MVC: Vista
Representa la capa de presentacin de los
datos.
Se encarga de mostrar la informacin al usuario,
por lo tanto tiene que ver con el diseo y
formateo de los datos para su presentacin.
Interfaz de usuario para la interaccin con la
aplicacin.
En la vista solo se deben de realizar operaciones
simples, como condiciones, ciclos, etc.
Patrn MVC: Controlador
Se encarga de controlar el flujo de la aplicacin.
Tiene la funcin de recibir y responder a los eventos
(acciones del usuario), convirtiendo stos en
solicitudes de servicio.
Adems, tiene que redirigir o asignar la parte de
lgica de negocios a cada peticin.
Cuenta con un mecanismo para guardar las
correspondencias entre peticiones y respuestas que
se les asignan.
Cada accin del usuario causa que se inicie de
nuevo un nuevo ciclo.
Arquitectura y diseo: Patrn
MVC
Interfaz
Usuario
Vista Modelo
Controlador
Evento Evento
Datos
Evento
Mostrar Vista
Informacin
Evento
Patrn MVC: Funcionamiento
El procesamiento de los
datos se lleva a cabo
entre sus tres
componentes.
El controlador recibe una
peticin y decide quien la
lleva a cabo en el
modelo.
Una vez terminadas las
operaciones en el
modelo, se transfiere el
flujo al controlador, que
devuelve los resultados a
una vista asignada.
Patrn MVC: Ventajas
Separacin total entre las capas de presentacin,
lgica de negocio y acceso a datos.
Esta separacin es fundamental para el desarrollo de
aplicaciones consistentes, reutilizables y ms
fcilmente mantenibles, resultando en un ahorro de
tiempo.
En Java se puede implementar el patrn MVC con la
clase Observer pero de una manera sencilla, sin
embargo con Struts se aplica en toda una aplicacin
Web convencional.
Reutilizacin de los componentes.
Simplicidad en el mantenimiento de los sistemas.
Facilidad para desarrollar prototipos rpidos.
Los desarrollos suelen ser ms escalables.
Patrn MVC: desventajas
La separacin de conceptos en capas agrega complejidad al
sistema.
La cantidad de archivos a mantener y desarrollar se incrementa
considerablemente.
La curva de aprendizaje del patrn de diseo es mas alta usando
otros modelos mas sencillos.
Tomando en cuenta las ventajas y desventajas del Modelo-Vista-
Controlador, la balanza se inclina mucho mas a favor de
implementar esta arquitectura.

Actividad 2
Realizar un mapa conceptual que nos ayude a entender el modelo
vista controlador.
Los 2 mejores mapas sern explicados por los autores y se les
considerara en su calificacin

También podría gustarte