Вы находитесь на странице: 1из 15

NOMBRE DEL TRABAJO:

Patrones de Diseo en el Desarrollo de Software.

MATERIA:
Programacion de aplicaciones

MAESTRO:
Jos Padilla Duarte

ALUMNO:
Francisco Javier Miranda Rodrguez

GRUPO:
ITI 9-1

8 de agosto del 2016, Hermosillo,Sonora

INDICE

Qu es un patrn de diseo?--------------------------------------------------------------------------------------3
Cules son las categoras y tipos de patrones de diseo que existen?------------------------------3-5
Cules son los patrones ms utilizados y por qu?------------------------------------------------------5
Definir las ventajas y desventajas de los siguientes patrones: Singleton, Refactory, Proxy y MVC .----5-7

Android Patterns: patrones de diseo para desarrollar en Android----------------------------8-12


Qu patrn de diseo se puede utilizar en lugar de MVC?---------------------------------------12
Explicar la diferencia de la implementacin de MVC que utilizaba Smalltalk a como se usa en la
actualidad en un lenguaje de programacin Web.---------------------------------------------------12
Ventajas y desventajas de utilizar MVC y MVP.------------------------------------------------------13
Conclusiones---------------------------------------------------------------------------------------------------14
Biblografias------------------------------------------------------------------------------------------------------15

CONTENIDO
1. - Qu es un patrn de diseo?
R=Los patrones de diseo son la base para la

bsqueda de soluciones a problemas comunes en el desarrollo de


software y otros mbitos referentes al diseo de interaccin o interfaces.
2. - Cules son las categoras y tipos de patrones de diseo que existen?

R= se clasifican como se muestra a continuacin:


Patrones Creacionales: Inicializacin y configuracin de objetos.
Fbrica Abstracta ( Abstract Factory )
El problema a solucionar por este patrn es el de crear diferentes familias de objetos, como por
ejemplo la creacin de interfaces grficas de distintos tipos (ventana, men, botn, etc.).
Mtodo de Fabricacin ( Factory Method )
Parte del principio de que las subclases determinan la clase a implementar.
public class ConcreteCreator extends Creator
{
protected Product FactoryMethod()
{
return new ConcreteProduct();
}
}
public interface Product{}
public class ConcreteProduct implements Product{}
public class Client
{
public static void main(String args[])
{
Creator UnCreator;
UnCreator = new ConcreteCreator();
UnCreator.AnOperations();
}
}

Prototipado ( Prototype )
Se basa en la clonacin de ejemplares copindolos de un prototipo.
Singleton
Restringe la instanciacin de una clase o valor de un tipo a un solo objeto.
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton()
{
System.Windows.Forms.MessageBox.Show("Nuevo Singleton");
}
public static Singleton GetInstance

{
get
{
if (instance == null)
{
lock(syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}

MVC ( Model View Controler )


Este patrn plantea la separacin del problema en tres capas: la capa model, que representa
la realidad; la capa controler , que conoce los mtodos y atributos del modelo, recibe y realiza
lo que el usuario quiere hacer; y la capa vista, que muestra un aspecto del modelo y es
utilizada por la capa anterior para interaccionar con el usuario.

Patrones Estructurales: Separan la interfaz de la implementacin. Se ocupan


de cmo las clases y objetos se agrupan, para formar estructuras ms grandes.
Adaptador (Adapter): Convierte una interfaz en otra.
Puente (Bridge): Desacopla una abstraccin de su implementacin permitiendo
modificarlas independientemente.
Objeto Compuesto (Composite): Utilizado para construir objetos complejos a partir de otros
ms simples, utilizando para ello la composicin recursiva y una estructura de rbol.
Envoltorio (Decorator): Permite aadir dinmicamente funcionalidad a una clase existente,
evitando heredar sucesivas clases para incorporar la nueva funcionalidad.
Fachada (Facade): Permite simplificar la interfaz para un subsistema.
Peso Ligero (Flyweight): Elimina la redundancia o la reduce cuando tenemos gran cantidad
de objetos con informacin idntica.
Apoderado (Proxy): Un objeto se aproxima a otro.

Patrones de Comportamiento: Ms que describir objetos o clases, describen


la comunicacin entre ellos.
4

Cadena de responsabilidad (Chain of responsibility): La base es permitir que


ms de un objeto tenga la posibilidad de atender una peticin.
Orden (Command): Encapsula una peticin como un objeto dando la
posibilidad de deshacer la peticin.
Intrprete (Interpreter): Intrprete de lenguaje para una gramtica simple y
sencilla.
Iterador (Iterator): Define una interfaz que declara los mtodos necesarios
para acceder secuencialmente a una coleccin de objetos sin exponer su
estructura interna.
Mediador (Mediator): Coordina las relaciones entre sus asociados. Permite la
interaccin de varios objetos, sin generar acoples fuertes en esas relaciones.
Recuerdo (Memento): Almacena el estado de un objeto y lo restaura
posteriormente.
Observador (Observer): Notificaciones de cambios de estado de un objeto.
Public Class Articulo
Delegate Sub DelegadoCambiaPrecio(ByVal unPrecio As Object)
Public Event CambiaPrecio As DelegadoCambiaPrecio
Dim _cambiaPrecio As Object
Public WriteOnly Property Precio()
Set(ByVal value As Object)
_cambiaPrecio = value
RaiseEvent CambiaPrecio(_cambiaPrecio)
End Set
End Property
End Class
Public Class ArticuloObservador
Public Sub Notify(ByVal unObjecto As Object)
Console.WriteLine("El nuevo precio es:" & unObjecto)
End Sub

End Class
Estado (Server): Se utiliza cuando el comportamiento de un objeto cambia
dependiendo del estado del mismo.
Estrategia (Strategy): Utilizado para manejar la seleccin de un algoritmo.
Mtodo plantilla (Template Method): Algoritmo con varios pasos
suministrados por una clase derivada.
Visitante (Visitor): Operaciones aplicadas a elementos de una estructura de
objetos heterognea.

3. - Cules son los patrones ms utilizados y por qu?


R= De acuerdo a la clasificacin de patrones segn GoF, los patrones
ms usados por el grupo de expertos, son los Creacionales, seguido por los
patrones de comportamiento, los menos utilizados son los patrones
estructurales;
ii) De acuerdo al grupo de expertos, el 100% del grupo utilizan el patrn
Factory Method y Singleton; el patrn Facade fue empleado por el 75% del
grupo; i
5

ii) De acuerdo a la totalidad de los patrones, se encontr evidencia del uso de


10 patrones del catlogo GoF, lo cual equivale al 43% del total de patrones del
catlogo.
4. - Definir las ventajas y desventajas de los siguientes patrones: Singleton,
Refactory, Proxy y MVC.
Singleton:

Ventajas

Al crear una sola instancia de los objetos se evita tener en


memoria una gran cantidad objetos, con lo cual se reduce el
consumo de recursos. Adems se puede mantener un mayor
control sobre el nmero de objetos creados.

Ofrece una solucin concreta a un problema, favoreciendo la


reutilizacin de cdigo y la comunicacin entre los procesos de la
aplicacin.

Desventajas

Si se realizan multiples peticiones simultaneamente, se pueden


generar cuellos de botella, lo cual genera conflictos en nuestro
sistema.

Probablemente al ser una solucin implementada a la medida de


un problema concreto no podr ser implementado en problemas
que requieran del mismo patrn.

Refactory:

Ventajas

Se gana en flexibilidad, pues crear los objetos dentro de una


clase con
un "Mtodo de Fbrica" es siempre ms
flexible que hacerlo directamente, debido a que se elimina la
necesidad de atar nuestra aplicacin unas clases de productos
concretos.
Se facilitan futuras ampliaciones, puesto que se ofrece las
subclases la posibilidad de proporcionar una versin extendida
de un objeto, con slo aplicar en los Productos la misma idea del
"Mtodo de Fbrica".
Se facilita, en cuanto a que se hace natural, la conexin entre
jerarquas de clases paralelas, que son aquellas que se generan
cuando una clase delega algunas de sus responsabilidades en
una clase aparte. Ambas jerarquas de clases paralelas son
creadas por un mismo cliente y el patrn Mtodo de Fbrica
establece la relacin entre parejas de subclases concretas en las
mismas.

Desventajas

Se obliga al cliente a definir subclases de la clase "Creador" slo


para c rear un producto concreto y esto puede no ser apropiado
siempre.

MVC:
Ventajas

Clara separacin entre interfaz, lgica de negocio y de presentacin, que


adems provoca parte de las ventajas siguientes.
Sencillez para crear distintas representaciones de los mismos datos.
Facilidad para la realizacin de pruebas unitarias de los componentes, as
como de aplicar desarrollo guiado por pruebas (TDD).
Reutilizacin de los componentes.
Simplicidad en el mantenimiento de los sistemas.
Facilidad para desarrollar prototipos rpidos.
Los desarrollos suelen ser ms escalables.
Desventajas
Tener que ceirse a una estructura predefinida, lo que a veces puede
incrementar la complejidad del sistema. Hay problemas que son ms difciles
de resolver respetando el patrn MVC.
La curva de aprendizaje para los nuevos desarrolladores se estima mayor que
la de modelos ms simples como Webforms.

La distribucin de componentes obliga a crear y mantener un mayor nmero de


ficheros.

PROXY
Ventajas

Se introduce un nivel de indireccin en el acceso al objeto, que permite al


apoderado remoto ocultar el hecho de que el objeto reside en un espacio de
direcciones distinto, al apoderado virtual realizar optimizaciones como la
creacin de objetos por demanda y al apoderado de proteccin y a las
referencias inteligentes realizar tareas adicionales de vigilancia sobre el
objeto al que se accede. No obstante todo esto puede resultar un
inconveniente, por motivos de claridad e inteligibilidad del diseo.
Facilita otra optimizacin, relacionada con la creacin de objetos por demanda:
la tcnica de COPY-ON-WRITE, que slo hace efectiva la copia de un objeto
oneroso cuando el acceso a l es de escritura, no de lectura.

Desventajas
El uso de un proxy introduce un nivel de indireccin adicional con diferentes usos:
7

Un Proxy remoto oculta el hecho de que un objeto reside en otro espacio de


direcciones.
Un Proxy virtual puede realizar optimizaciones, como la creacin de objetos bajo
demanda.
El Proxy de proteccin y las referencias inteligentes permiten realizar diversas tareas
de mantenimiento adicionales al acceder a un objeto.
Adems, su uso tambin permite realizar una optimizacin COW (copy-on-write),
puesto que copiar un objeto grande puede ser costoso, y si la copia no se modifica, no
es necesario incurrir en dicho gasto. Adems el sujeto mantiene un nmero de
referencias, y slo cuando se realiza una operacin que modifica el objeto, ste se
copia. Es til por tanto para retrasar la replicacin de un objeto hasta que cambia.
5. - Android Patterns: patrones de diseo para desarrollar en Android
R= Cada Sistema Operativo o plataforma cuenta con directrices para el diseo. El
diseo consistente ayudar a crear un look diferente para cada Sistema Operativo o
plataforma. Cuando est trabajando en una aplicacin que se centrar tanto en iOS y
Android , por ejemplo , usted aprender que hay una serie de pasos a seguir para el
diseo de la interfaz. Estos son algunos ejemplos de los aspectos que se enfatizan de
manera diferente a otros

Sistemas Operativos Mviles.

Personalizacin: En los lineamientos de Android, se recomienda que incluya


un nivel de personalizacin dentro de una aplicacin , ya que ayuda a que los usuarios
se sientan cmodos.

Iconos Ms Que Palabras : Comunicar algo a travs de imgenes, como


iconos es lo ideal. Si te encuentras con un escenario en el que las palabras son
absolutamente necesarias, asegrese de mantenerlo conciso y procesable.

Cada usuario es un experto: Las aplicaciones mviles siempre deben


ser fciles de usar. Al mismo tiempo , se debe dar al usuario la impresin de que
es un usuario avanzado . Esto se puede lograr proporcionando accesos directos o
mediante la implementacin de un proceso de incorporacin de gran alcance.

Estndar De Diseo De interfaz En Android


Como punto de partida, la plataforma Android en la actualidad ofrece

dos temas

estndar cuando se quiere disear aplicaciones para la plataforma. Estos temas son
tiles y se recomiendan cuando est empezando, pero de ninguna manera son
obligatorios.
Los temas se llaman Holo Light y Holo Dark, una plantilla clara y otra oscura,
dependiendo del estilo visual que pretende lograr en la aplicacin.

Utilizando uno de los temas estndar le ayudar cuando usted est empezando y
aprender ms sobre los patrones de diseo de Android. Debido a que los
temas estndar son una parte de Android, se parte de una base slida que se ajusta a
los estndares del sistema
para los diseos personalizados.

operativo. Tambin es un gran punto de partida

Iconos De Las Aplicaciones


Por supuesto, no se trata slo de la interfaz de la aplicacin. Incluso el diseo simple
se hizo popular en iOS, una clara diferencia ha surgido entre los iconos de la
aplicacin en

Android e iOS

La mayora de las aplicaciones de Android, tienen iconos que crean una sensacin de
profundidad para imitar el mundo real. Muchos iconos de las aplicaciones en Android,
tienen un sutil efecto 3D aplicado a ellos para crear esa sensacin de profundidad.
Otra diferencia notable entre los iconos de Android e iOS es el uso de la transparencia.
Si est desarrollando una aplicacin que se dirigen tanto a Android e iOS, entonces es
importante esto para crear un concepto que funcione bien en ambas plataformas.

Diseo Interactivo
Cuando un usuario interacta con la interfaz de usuario de una aplicacin, se espera
alguna forma de retroalimentacin visual. Esta reaccin es generalmente ms
explcita sobre Android de lo que es en iOS.
La informacin visual es ideal para mejorar la experiencia del usuario, ya que
crea una sensacin de capacidad de respuesta y de control, que son dos aspectos
usuarios han llegado a esperar de las aplicaciones mviles.
Como investigacin, pueden descargar algunas de las aplicaciones ms populares de
cada plataforma y explorar la forma en que responden a su accin.

Diferencias Entre Android E iOS


No debera ser una sorpresa que un nmero de componentes son nicos o diferentes
en la

plataforma Android.

Tenga en cuenta que estos son slo algunos ejemplos. El mejor consejo que te puedo
dar cuando se est creando una aplicacin para una plataforma en la que no est
familiarizado es obtener informacin de los usuarios y desarrolladores que estn
familiarizados con la plataforma. Pueden sealar rpidamente lo bueno, lo malo y lo
feo.
Tablas Fijas
En iOS, una barra de pestaas se encuentra generalmente en la parte inferior de la
pantalla en la interfaz de usuario de una aplicacin. En Android, sin embargo, las
pestaas se colocan en la parte superior. Android soporta pestaas mltiples y
desplazables, mientras iOS tiene pautas especficas en qu casos el uso pestaas son
un buen ajuste y los lineamientos incluso especificar el nmero mximo de pestaas.
El resultado es una interfaz de usuario diseado para la plataforma Android no siempre
puede trabajar en iOS debido a limitaciones tcnicas. Las pestaas desplazables, por
ejemplo, son exclusivos de Android y no son compatible con el SDK de iOS.
Men Desplegable

Un men desplegable es algo que slo se encuentra en Android. Hay


diferentes casos de uso en los que un men desplegable es un buen ajuste. Cuando
tiene muchas funcionalidades una gran cantidad de grupos de contenido con
navegacin inconsistente, un men desplegable es una solucin viable para resolver
un problema.

Back & Up

10

Dado que en Android 4.0,


hay una barra de navegacin popular en la parte inferior de la pantalla. Aparte del
botn reciente, la barra de navegacin tambin contiene un botn de Back & Up. Al
tocar de nuevo lleva al usuario a la pantalla anterior mientras sigue golpeando, lo
llevara hasta el nivel superior en la jerarqua de la aplicacin.
Esta es una caracterstica de gran alcance, el cual debe tomar en cuenta al crear la
arquitectura de la informacin de una aplicacin. En Android, por lo general, no se ve a
medida de nuevo los botones como los que solemos ver en la barra de navegacin de
las aplicaciones de iOS.
Widgets
Android tambin es compatible con los
plataforma iOS.

widgets, los cuales no son usados en la

Exploracin De Patrones De Diseo


Vamos a bucear ms profundamente en algunos de los

patrones de diseo en

Android. En general, las mejores prcticas para crear una interfaz de usuario, es ver
como otras aplicaciones resuelven un problema de diseo en particular y cmo los
elementos estndar de la interfaz pueden resolverlo.
Por ejemplo, cmo muestran el contenido las demas aplicaciones? Cmo manejan
la entrada del usuario? O implementan el comercio electrnico? Al observar algunos
ejemplos, se obtiene una idea de las posibles soluciones para resolver el problema de
diseo al que te ests enfrentando. Esto significa que usted debe copiar
descaradamente una aplicacin existente? En realidad no.
Una aplicacin bien pensada trata de resolver un problema especfico. Por lo general,
su aplicacin trata de abordar un problema nico, lo que significa que usted tiene que
averiguar un flujo de usuario adecuada.
La siguiente lista te dar una introduccin a pensar en los posibles patrones de diseo
para su aplicacin:
Muestralo, no lo digas. Ensear a los usuarios acerca de como funciona tu aplicacin
en lugar de crear un manual. En general, todo el material escrito contado no debe
de usarse.
Enfoque. Una interfaz debe tener un nico objetivo, desde la perspectiva del usuario.
11

Fomentar la exploracin de diversas funciones a travs de la navegacin eficiente.


Abra cinco aplicaciones y ver cmo cada uno implementa la navegacin. Conozca los
beneficios y desventajas de cada aplicacin.
Definir el modelo de datos y el flujo de usuario antes de la construccin y el diseo de
la aplicacin.
Cuando la construccin de una nueva aplicacin, buscar aplicaciones semejantes a
aprender. Qu significa la afluencia de usuarios parece? Cmo se disea la interfaz
del usuario y cmo se puede mejorar?
La aplicacin de patrones de diseo se reduce a pensar de manera abstracta sobre la
construccin de la aplicacin ms eficiente, con un fuerte enfoque en el flujo de
usuario y la interfaz.
Involucrar a los usuarios de Android en el proceso de diseo para obtener
retroalimentacin temprana y una nueva mirada sobre el estado actual de su diseo.
6. - Qu patrn de diseo se puede utilizar en lugar de MVC?
R= ModeloVistaPresentador (MVP)
7. - Explicar la diferencia de la implementacin de MVC que utilizaba
Smalltalk a como se usa en la actualidad en un lenguaje de programacin
Web.
R= El patrn MVC fue una de las primeras ideas en el campo de las interfaces
grficas de usuario y uno de los primeros trabajos en describir e implementar
aplicaciones software en trminos de sus diferentes funciones.5
MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76 durante su
visita a Xerox Parc en los aos 70 y, seguidamente, en los aos 80, Jim Althoff y otros
implementaron una versin de MVC para la biblioteca de clases de Smalltalk-80.8 Solo
ms tarde, en 1988, MVC se expres como un concepto general en un artculo9 sobre
Smalltalk-80.
En esta primera definicin de MVC el controlador se defina como "el mdulo que se
ocupa de la entrada" (de forma similar a como la vista "se ocupa de la salida"). Esta
definicin no tiene cabida en las aplicaciones modernas en las que esta funcionalidad
es asumida por una combinacin de la 'vista' y algn framework moderno para
desarrollo. El 'controlador', en las aplicaciones modernas de la dcada de 2000, es un
mdulo o una seccin intermedia de cdigo, que hace de intermediario de la
comunicacin entre el 'modelo' y la 'vista', y unifica la validacin (utilizando llamadas
directas o el "observer" para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo).
Algunos aspectos del patrn MVC han evolucionado dando lugar a ciertas variantes
del concepto original, ya que "'las partes del MVC clsico realmente no tienen sentido
para los clientes actuales":
HMVC (MVC Jerrquico)
MVA (Modelo-Vista-Adaptador)
12

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

8. Ventajas y desventajas de utilizar MVC y MVP.


R=MVC significa Modelo Vista Controlador, porque en este patrn de
diseo se separan los datos de una aplicacin, la interfaz de usuario, y
la lgica de negocio en tres componentes distintos. Cuando la lgica de
negocio realiza un cambio, es necesario que ella sea la que actualiza la
vista.
El Patrn Modelo-Vista-Presentador (MVP) surge para ayudar a realizar
pruebas automticas de la interfaz grfica, para ello la idea es codificar
la interfaz de usuario lo ms simple posible, teniendo el menor cdigo
posible, de forma que no merezca la pena probarla. En su lugar, toda la
lgica de la interfaz de usuario, se hace en una clase separada (que se
conoce como Presentador), que no dependa en absoluto de los
componentes de la interfaz grfica y que, por tanto, es ms fcil de
realizar pruebas.

13

CONCLUSIONES:

Yo creo que la utilizacin de los patrones de diseo son muy positivos al


momento de resolver problemas en varios sectores tecnolgicos.

En la materia de programacin en la hora de resolver problemas te


ahorran mucho tiempo y ya con ello conseguir un mejor rendimiento y
eficacia.

BIBLOGRAFIA
14

https://platzi.com/blog/patrones-de-diseno/
https://msdn.microsoft.com/es-es/library/bb972240.aspx
http://jgodinez.com/2011/11/14/patron-singleton-en-csharp/
http://www.ecured.cu/Factory_Method
http://thelozu.blogspot.mx/2013/07/modelo-vistacontrolador.html
http://www.ecured.cu/Proxy_(Patr%C3%B3n_de_dise
%C3%B1o)
http://blog.hostdime.com.co/introduccion-a-lospatrones-de-diseno-en-android/
https://ingsoftwarei2014.wordpress.com/category/comp
aracion-de-los-patrones-de-arquitectura-mvc-mv-vmmvp/
https://es.wikipedia.org/wiki/Modelo%E2%80%93vista
%E2%80%93controlador

15