Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Patrones de diseño

No description
by

Víctor Hugo Contreras

on 26 May 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Patrones de diseño

Programar para interfaces y no para implementaciones:
Patrones de diseño
Desarrollo de software

Conceptos previos
- UML (Básico)
Estructural
UML
UML es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software.

Se usa para entender, diseñar, configurar, mantener y controlar la información sobre los sistemas a construir.

Los diagramas de UML son muy utilizados para describir la funcionalidad de software a varios niveles de abstracción, por esta razón UML es utilizado como lenguaje de modelado para la descripción de patrones de diseño.
- Microsoft .NET
- Lenguaje C# (Sharp)
Dinámica
Gestión de
modelo
Extensión
de UML
Estática
de Casos de uso
de Despliegue
de Clase
Clase, asociación, generalización, dependencia, realización, interfaz
Caso de uso, actor, asociación, extensión, inclusión, generalización de casos de uso
Componente, interfaz, dependencia, realización
Qué diagramas
debemos conocer para entender los patrones?
Diagrama de clases
Diagrama de secuencia
Microsoft .NET
Qué es Microsoft .NET?
Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Esto quiere decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecución de las mismas sea óptima.
.NET Framework
Es el componente fundamental de la plataforma Microsoft .NEt, necesario tanto para poder desarrollar aplicaciones como para poder ejecutarlas luego en entornos de prueba o producción.
Arquitectura del
.NET Framework
Lenguaje C# (Sharp)
Es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET
Patrones
Origen de los patrones:
Arq. Cristopher Alexander, 70’sWard
Cuningham y Kent Beck 1987
Erich Gamma, Richard Helm, Ralph Johonson y Hohn Vissides (el grupo de los cuatro) 1990/1994
Qué es
un patrón?
Antipatrones
Qué son?
Forma literaria que describe una
solución comúnmente dada a un
problema que genera consecuencias negativas decididamente.
Por qué es
importantes
conocerlos?
Patrones
de diseño
Guardar experiencia de diseño (OOP).
Agrupar correctamente la experiencia de diseño.
Facilitan la reutilización de diseños.
Mejorar la documentación y mantenimiento de sistemas.
Nos ayuda a lograr diseños correctos en menor tiempo.
Su objetivo
Principios de diseño
(Los patrones de diseño se basan en los siguiente principios de diseño)
- Favorece la composición de objetos frente a la
herencia de clases.
Cómo describir los
patrones de diseño?
Descripción de los patrones de diseño
Notaciones gráficas:
Reutilización de diseño:
Sin bien, las notaciones gráficas son importantes y útiles, generalmente no son suficiente. Estas solo toman el producto terminado del proceso de diseño como relaciones entre clases y objetos.
Para la reutilización de diseño, se deben guardar las decisiones, alternativas y ventajas que nos llevaron a este diseño. Los ejemplos concretos son también muy importantes, porque estos nos ayudan a comprender el funcionamiento del diseño
Plantillas
de patrones
1 - Nombre del patrón
2 - Propósito
3 - También conocido como
4 - Motivación
5 - Aplicabilidad
6 - Estructura
7 - Participantes
8 - Colaboraciones
9 - Consecuencias
10 - Implementación
11 - Código de ejemplo
12 - Usos conocidos
13 - Patrones relacionados
Clasificación de
patrones de diseño
- de Creación:
- Estructurales:
- de Comportamiento:
Abstraen el proceso de creación de instancias de objetos
Tratan con la composición de clases u objetos. Se ocupan de cómo clases y objetos son utilizados para componer estructuras de mayor tamaño.
Caracterizan el modo en que las clases y objetos interactúan y se reparten la responsabilidad. Corresponde a los algoritmos y a la asignación de responsabilidades entre objetos.
de Creación
Estructural
de Comportamiento
Interpreter
Template Method
Chain of Responsability
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
Adapter (de clase)
Adapter (de objetos)
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Factory Method
Abstract Factory
Builder
Protopype
Singleton
Ámbito
Clase
Objeto
Abstract Factory
- Propósito:
- Aplicabilidad (Cuando usarlo?):
Proporcionar una interfaz para la creación de familias de objetos relacionados sin especificar sus clases concretas.
Un sistema debe ser independiente de la forma en que sus productos son creados, compuestos y representados.
Un sistema debe ser configurado con una de muchas familias de productos disponibles.
Una familia de productos son diseñados para su uso conjunto, y se requiere asegurar este uso conjunto.
Se desea proporcionar una biblioteca de productos presentando su interfaz, pero no su implementación
Abstract Factory (Estructura)
Abstract Factory (Ejemplo)
Nodo, componente, dependencia, localización
Estado, evento, transición, acción
Área
Vista
Diagramas
Conceptos principales
Estado, actividad, transición de terminación, división, unión.
Colaboración, interacción, rol de colaboración, mensaje
Paquete, subsistema, modelo
Restricción, estereotipo, valores etiquetados.
de Implementación
de gestión del modelo
de Máquina de estados
de Casos de uso
de Componentes
de Despliegue
de Estados
de Actividad
de Actividad
de Iteración
de Colaboración
de Clases
Todos
Todos
VB
C++
C#
......
Common Language Specification
ASP.NET
Windows Forms
ADO.NET y XML
Base Class Library
Common Languaje Runtime
Windows
COM+ Services
Class Library
.NET Framework
- Determina qué es común y que es variable:
- Permite el reemplazo de lo variable mediante una
interfaz común.
Común = Estable
º
Ejemplo de patrones de diseño
}
Adapter
- Propósito:
El adaptador permite la colaboración entre clases con interfaces incompatibles.
- Aplicabilidad:
•Se desea emplear una clase existente que no es compatible con el interfaz que se le requiere.
•Se desea crear una clase reutilizable que coopere con clases no relacionadas.
•Se desea usar diversas subclases existentes pero resulta impráctico adaptar sus interfaces mediante la extensión de todas ellas por lo que se emplea un objeto adaptador de la clase padre.
Adapter (Estructura)
Adapter (Ejemplo)
Observator
- Propósito:
Definir una dependencia uno-a-muchos entre objetos de un modelo y sus vistas de tal forma que cuando el objeto cambie de estado, todos sus objetos dependientes sean notificados y actualizados automáticamente.
- Aplicabilidad:
•Una abstracción tiene dos aspectos diferentes, uno dependiente del otro. Encapsular estos aspectos en objetos separados permite su variación y reutilización de modo independiente.•
Cuando una modificación en el estado de un objeto requiere cambios de otros, y no se desea conocer cuantos objetos deben ser cambiados.•
Cuando un objeto debería ser capaz de notificar a otros objetos sin hacer ninguna suposición acerca de los objetos notificados.
Observer (Estructura)
Observer (Ejemplo)
(Patrón...)
(Patrón)
(Sistema con múltiples conexiones de base de datos)
(Seguimiento de contador)
(Nueva clase ProgramadorFreelance)
Una solución, probada, y
documentada a un problema
que se repite en un determinado contexto.
Los antipatrones son considerados una parte importante del conocimiento, en otras palabras, es muy importante conocer y entender las buenas soluciones y las malas soluciones.
Los diseñadores intentan evitar los antipatrones siempre que sea posible, pero para esto se debe poder reconocerlos e identificarlos lo antes posible. Los antipatrones más útiles son aquellos que no permiten rehacer un buen diseño a partir de uno malo.

Los diseñadores intentan evitar los antipatrones siempre que sea posible, pero para esto se debe poder reconocerlos e identificarlos lo antes posible.

Gracias!
Singleton
- Propósito:
Asegurar que una clase tiene una sola instancia, y brindar un punto de acceso global a ella.
- Motivación :
Muchas entidades tienen una única instancia.

- Solución:

La propia clase es responsable de crear la única instancia.
Permite el acceso global mediante un método de clase.
Declara el constructor de la clase como privado

class
Singleton
{


private
Singleton() {}

private
static Singleton _instance =
null
;


public static
Singleton GetInstance()
{

if
(_instance ==
null
)
_instance =
new
Singleton();

return
_instance;
}

}

Ventajas
Como encapsula su única instancia, puede tener un control estricto acerca de cómo y cuándo los clientes la acceden.
Ofrece flexibilidad para realizar cambios en el proceso de instanciación, ya que es controlado por la propia clase.
Permite la especialización de la clase mediante herencia.
Puede ocurrir una mínima pérdida de rendimiento al verificar si ya existe la instancia única, aunque puede ser eliminada usando inicialización estática de ella (inicialización temprana).
Duración de la instancia única: este patrón no contempla la eliminación de la instancia.

Contras
Full transcript