You are on page 1of 1

UNIVERSIDAD TECNOLGICA DE NAYARIT

TIC-43 DESARROLLO DE APLICACIONES 2


Nombre del patrn: nombre
estndar del patrn por el cual
ser reconocido en la
comunidad (normalmente se
expresan en ingls).

Clasificacin del patrn:


Particin, Comportamiento,
Arquitectura,Estructura,
Creacin o Concurrencia

Intencin: Qu problema
pretende resolver el patrn?

Tambin conocido como:


Otros nombres de uso comn
para el patrn.

Motivacin: Escenario de
ejemplo para la aplicacin del
patrn.

Aplicabilidad: Usos
comunes y criterios de
aplicabilidad del patrn.

Iterator: Define una interfaz que


declara los metodos necesarios para
acceder secuencialmente a una
coleccin de objetos sin exponer su
estructura interna

Comportamiento

PROTOTYPE: tiene como finalidad


crear nuevos objetos duplicndolos,
clonando una instancia creada
previamente

Creacin: Inicializacin y configuracin


de objetos.

Producer-Consumer:En computacin, el problema del productorconsumidor es un ejemplo clsico de problema de sincronizacin de


multi-procesos. El programa describe dos procesos, productor y
consumidor, ambos comparten un buffer de tamao finito.

Concurrencia: Permiten coordinar operaciones concurrentes

Una clase necesita acceder al


contenido de una coleccin si llegar a Especifica los tipos de objetos a crear
ser dependiente de la clase que es
utilizando una instancia prototipo, y
El hilo productor no debe almacenar otro elemento en este tampn
utilizada para implementar la
crear nuevos objetos mediante la copia
hasta que el punto anterior se ha consumido
coleccin, es decir sin tener que
de este prototipo
exponer su representacion interna

Iterador

Prototipo

Este patrn propone la creacin de


distintas variantes de objetos que
nuestra aplicacin necesite, en el
momento y contexto adecuado.

Arrays

El patron iterator permite el acceso al


contenido de una estructura sin
exponer su representacion interna.
Ademas diferentes iteradores pueden
presentar diferentes tipos de recorrido
sobre la estructura(recorrido de
principio a fin, recorrido con saltos...)

Aplica en un escenario donde sea


necesario la creacin de objetos
parametrizados como "recin salidos
de fbrica" ya listos para utilizarse

Productor-consumidor

Evitar los cuellos de botella, es decir, la perdida de informacin o


duplicidad de la misma.

se utiliza comnmente cuando se adquieren varios conjuntos de


datos a ser procesado en orden.

Composite: sirve para construir objetos


complejos a partir de otros ms simples y
similares entre s

Se ocupan de cmo las clases y objetos se


agrupan, para formar estructuras ms
grandes.

Modelo Vista Controlador (MVC): es un


patrn de arquitectura de software que
Proxy: Es un patrn estructural que
separa los datos y la lgica de negocio de tiene como propsito proporcionar
una aplicacin de la interfaz de usuario y el un intermediario para controlar el
mdulo encargado de gestionar los eventos
acceso a un objeto.
y las comunicaciones.

Arquitectura

Los patrones de diseo estructurales


estn enfocados en la gestin de la
forma en la que las clases y los
objetos se combinan para dar lugar
a estructuras ms complejas.

El objetivo principal del patrn MVC fue dar


Proporcionar un representante de
Componer objetos en jerarquas parte-todo
soporte a los modelos mentales de los
otro objeto, por distintas razones
y permitir a los clientes tratar objetos
usuarios acerca del espacio de informacin
como pueden ser el acceso, la
simples y compuestos de modo uniforme
relevante y permitir a este inspeccionar y
velocidad o la seguridad, entre otras.
editar esta informacin.

Compuesto

MVC, Modelo Vista Controlador

operador, operadores proxy

Las aplicaciones grficas tienen


componentes que pueden agruparse para
formar componentes mayores
(contenedores)

Para mejorar la reutilizacin, extensibilidad,


flexibilidad y el resto de elementos de las
aplicaciones, proponemos el uso se puede
usar el siguiente patrn de diseo,
entendiendo que este es un descriptor de
objetos y clases adaptadas para resolver
un problema.

Retrasar el coste de crear e


inicializar un objeto hasta que sea
realmente necesario. Por ejemplo,
no abrir las imgenes de un
documento hasta que no son
visibles.

Los clientes tratan todos los objetos en la


estructura composite de manera uniforme

Calculadora de euros a pesetas

Proxy virtual: crea objetos costosos


por encargo. Cuando se utiliza un
software no siempre se cargan todas
las opciones por default. Muchas
veces se habilitan ciertos mdulos
slo cuando el usuario decide
utilizarlos.

Estructura: Diagramas de
clases oportunos para describir
las clases que intervienen en el
patrn.

Cliente: Es el encargado de solicitar la


creacin de los nuevos objetos a partir
de los prototipos.
Participantes: Enumeracin
y descripcin de las entidades
abstractas (y sus roles) que
participan en el patrn.

Prototipo Concreto: Posee unas


caractersticas concretas que sern
reproducidas para nuevos objetos e
implementa una operacin para
clonarse.

Iterador
Iterador Concreto
Agregado
Agregado concreto

Productor
Buffer
Consumidor

Cliente, component, leaf y compoposate

Un modelo puede tener diversas vistas,


cada una con su correspondiente
controlador. Un ejemplo clsico es el de la
informacin de una base de datos, que se
puede presentar de diversas formas:
diagrama de tarta, de barras, tabular, etc.

Subject, RealSubject y Proxy.

Prototipo: Declara una interfaz para


clonarse, a la que accede el cliente.

Iterador: define la interfaz para


recorrer el agregado de elementos y
acceder a ellos, de manera que el
cliente no tenga que conocer los
detalles y sea capaz de manejarlos de
todos modos.
Iterador Concreto:Es el que se
Colaboraciones: Explicacin
encarga de mantener la posicin
de las interrelaciones que se
actual en el recorrido de la estructura.
dan entre los participantes.
Agregado: define la interfaz para el
mtodo de fabricacin de iteradores.
Agregado Concreto :implementa la
estructura de datos y el mtodo de
fabricacin de iteradores que crea un
iterador especfico para su estructura.

Consecuencias:
Consecuencias positivas y
negativas en el diseo
derivadas de la aplicacin del
patrn.

El cliente pide al prototipo que se


clone.

Aplicar el patrn prototipo permite


ocultar las clases producto del cliente y
Informacion inapropiada e incompleta. permite que el cliente trabaje con estas
clases dependientes de la aplicacin
sin cambios.

El buffer
El productor

ConcreteSubject notifica a sus


La clase Proxy tiene los mtodos de
Los clientes usan la clase Componente para
observadores sobre un cambio que podra una clase real subjetc y necesitan
interaccionar con los objetos de la
hacer el estado de los observadores fuera una interface para interactuar entre
estructura Composite
inconsistente con el suyo propio
s.

Mala organizacin de los datos,Secuencias inapropiadas de los


procesos

Un proxy remoto oculta el hecho de


que un objeto reside en otro espacio
El patrn observer te permite cambiar
de direcciones.
sujetos y observadores de manera
Un proxy virtual puede realizar
La composicin puede ser recursiva. Puede independiente de manera que se pueden
optimizaciones, como la creacin de
tratar la estructura y los objetos individuales rehusar ambos. Puede violar la separacin
objetos bajo demanda. El proxy de
uniformemente
en capas de tu aplicacin pues los
proteccin y las referencias
observadores pueden pertenecer a capas
inteligentes permiten realizar
diferentes de la del sujeto.
diversas tareas de mantenimiento
adicionales al acceder a un objeto.

Para la creacin del patrn iterador


debe implementarse el control de la
iteracin (pudiendo ser un iterador
El navegadorlanza una peticion HTTP a
externo que ofrece los mtodos para
la aplicacin, evento que es capturado
El navegador lanza una peticin HTTP a la
Implementacin: Tcnicas o
que el cliente recorra la estructura
Comparticin de componentes. Maximizar la
por el servidor de aplicaciones y
Se utiliza comnmente cuando se tienen varios conjuntos de datos,
aplicacin, evento que es capturado por el Google al interactuar en la bsqueda
comentarios oportunos de cara paso a paso, o un iterador interno que
interfaz Component. Operaciones de
encaminadoal componente
y se desea que estos sean procesados ordenadamente.
servidor de aplicaciones y encaminado al
de imgenes.
a la implementacin del patrn. ofrece un mtodo de actuacin sobre
gestin de hijos. Orden de los hijos
correspondiente del modelo vista
componente correspondiente.
la estructura que, de manera
controlador para su tratamiento
transparente al cliente, la recorre
aplicndose a todos sus elementos) y
definirse el recorrido
int itemCount = 0;
procedure producer() {
while (true) {
item = produceItem();
if (itemCount == BUFFER_SIZE) {
sleep();
}

public Object create() {


return create(nombrePorDefecto);
}
public Object create(String nombre) {
nombrePorDefecto = nombre;
Producto objeto =
(Producto)mapaObjetos.get(nombre);
return objeto != null ?
objeto.clone() : null;
}
}

Public class vector2{


public int [] _ datos;
Cdigo de ejemplo: Cdigo
fuente ejemplo de
implementacin del patrn.

public Vector2(int valor){


_datos = new int [valores];
for (int i=0; i<_datos.legth;i++){
}
}

putItemIntoBuffer(item);
itemCount = itemCount + 1;
if (itemCount == 1) {
wakeup(consumer);
}
}
}
procedure consumer() {
while (true) {
if (itemCount == 0) {
sleep();
}
item = removeItemFromBuffer();
itemCount = itemCount - 1;
if (itemCount == BUFFER_SIZE - 1) {
wakeup(producer);
}

public interface Component {


public void add (Component c); public void protected Vector vectorDePersonas;public
remove (Component c); public Component
ListaDePersonas()
getChild (int i);
{
}
vectorDePersonas = new Vector();
public class Leaf implements Component {
}
public void add (Component c) {} // tambin public void agregarPersona(Persona aPers
puede lanzar una excepcin public void
ona)
public class ImageProxy extends
remove (Component c) {} // tambin puede
{
Graphic {
lanzar una excepcin public Component
vectorDePersonas.add(aPersona);
private Image _image;
getChild (int i) { return null; }
}
private String _fileName;
}
public int getNumeroDePersonas()
public ImageProxy (String fileName)
public class Composite implements
{
{
Component {
return vectorDePersonas.size();
_fileName = fileName;
private Vector _children = new Vector();
}
_image = null;
public void add (Component c)
public Persona getPersona(int aIndex)
}
{ _children.addElement(c); } public void
{
remove (Component c)
return
{ _children.removeElement(c); } public
(Persona) vectorDePersonas.elementAt(aIn
Component getChild (int i) { return
dex);
_children.elementAt(i); }
}}
}

consumeItem(item);
}

Usos conocidos: Ejemplos


de sistemas reales que usan el
patrn.

Patrones relacionados:
Referencias cruzadas con otros
patrones.

Este patrn debe ser utilizado cuando


un sistema posea objetos con datos
repetitivos, en cuanto a sus atributos.

Google maps,Facebook,GPS

Prototype

Object Pool

Impresoras,Folios,Procesos en una empresa

Scheduler
Thread pool

Aadir acceso de seguridad a un


objeto existente.
Cuando desarrollamos una aplicacin como
Calculadora de euros a pesetas
El proxy determinar si el cliente
un editor de dibujos y sistemas de circuitos Calcular pesetas de una cantidad en euros
puede acceder al objeto de inters
que permiten a los usuarios constituir
Calcular euros de una cantidad en pesetas
(proxy de
diagramas complejos desde componentes
Pginas Web
proteccin).Proporcionando interfaz
simples. (Interfaces Graficas)
de recursos remotos como el
servicio web o recursos REST.

Los Iteradores se pueden usar para


recorrer composites

HMVC (MVC Jerrquico)


MVA (Modelo-Vista-Adaptador)
MVP (Modelo-Vista-Presentador)
MVVM (Modelo-Vista Vista-Modelo)

Patron Adaptador

You might also like