La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO JESSICA MANRIQUE MOLINA YORLEY REYES GARCIA CARLOS ALBERTO VERGARA.

Presentaciones similares


Presentación del tema: "Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO JESSICA MANRIQUE MOLINA YORLEY REYES GARCIA CARLOS ALBERTO VERGARA."— Transcripción de la presentación:

1 Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO JESSICA MANRIQUE MOLINA YORLEY REYES GARCIA CARLOS ALBERTO VERGARA

2 PATRONES DE DISEÑO GoF INTRODUCCIÓN Lo importante es mostrar como utilizar Los patrones GoF y los Grasp más básicos.

3 PATRONES DE DISEÑO GoF Patrones: Son principios y estilos que sirven Para diseñar los objetos. Los patrones se pueden clasificar según su proposito: Patrones de Creacion Patrones de Comportamiento Patrones estructurales

4 Abstraen la forma en la que se crean los objetos, permitiendo la creacion de las clases de forma genérica dejando para más tarde la decisión de qué clases crear o cómo crearlas (Factory, Singleton y Prototype). Patrones de Creación

5 Según donde se tome dicha decisión podemos clasificar a los patrones de creación en patrones de creación de clase (la decisión se toma en los constructores de las clases y usan la herencia para determinar la creación de las instancias) y patrones de creación de objeto (se modifica la clase desde el objeto). Patrones de Creación

6 Los patrones de comportamiento estudian las relaciones entre llamadas entre los diferentes objetos, normalmente ligados con la dimensión temporal (Observador y Estrategia). Patrones de Patrones de Comportamiento

7 Patrones estructurales Hacen relación a como las clases y los objetos se combinan para dar lugar a estructuras más complejas. Se puede hablar de patrones estructurales asociados a clases (Adapter) y asociados a objetos (Composite, Decorator, Facade), los primeros utilizarán la herencia, los segundos la composición.

8 Patrones estructurales Los patrones estructurales asociados con objetos describen formas de componer los objetos para conseguir nueva funcionalidad. La flexibilidad de la composición de objetos viene de la posibilidad de cambiar la composición en tiempo de ejecución, lo que es imposible con la composición estática de clases.

9 Patrones de la Pandilla de los Cuatro (GoF) Reciben el nombre de pandilla de los cuatro, puesto que el libro Design Patterns fue escrito por cuatro autores Estos patrones son: Adaptador Factoria Singleton

10 Problema Comó resolver interfaces incompatibles, o proporcionar una interfaz estable para componentes parecidos con diferentes interfaces? Solución Convertir la interfaz original de un componente en otra interfaz, mediante un objeto adaptador intermedio. Adapter(Patrón Adaptador)

11 El diagrama general Adapter(Patrón Adaptador)

12 A continuación explicamos cada uno de los Roles del diagrama Client : Clase que llama metodos de otra clase a travéz de una interfaz(target), sin asumir que el objeto que implementa el método al que llama, pertenezca a una clase específica. Clase que llama metodos de otra clase a travéz de una interfaz(target), sin asumir que el objeto que implementa el método al que llama, pertenezca a una clase específica. Adapter(Patrón Adaptador)

13 Target: Esta interfaz declara el método que una clase Client llama, es dependiente del dominio que utiliza el cliente. Esta interfaz declara el método que una clase Client llama, es dependiente del dominio que utiliza el cliente. Adapter(Patrón Adaptador)

14 Adapter: Esta clase implementa la interfaz. Implementa el método que el cliente llama, haciendo un llamado a un método de la clase Adaptee, la cual no implementa la interfaz. Esta clase implementa la interfaz. Implementa el método que el cliente llama, haciendo un llamado a un método de la clase Adaptee, la cual no implementa la interfaz. Adapter(Patrón Adaptador)

15 Adaptee: Esta clase no implementa el método de la interfaz, pero tiene algún método que la clase cliente quiere llamar. Esta clase no implementa el método de la interfaz, pero tiene algún método que la clase cliente quiere llamar. Adapter(Patrón Adaptador)

16 Una clase Adaptador implementa una interfaz conocida para sus clientes, y provee acceso a una instancia de una clase no conocida. Un objeto Adaptador provee la funcionalidad prometida por una interfaz, sin tener que asumir qué clase es usada para implementar la interfaz. Adapter(Patrón Adaptador)

17 Problema ¿Quién debe ser el responsable para la creación de objetos, se desea separar las responsabilidades de creación para mejorar la cohesión? Solución Crear un objeto factoría que maneje la creación de objetos. Factory(Patrón Factoria)

18 La idea que se esconde detrás de este patrón es la de centralizar el sitio donde se crean los objetos, normalmente donde se crean objetos de una misma "familia", como podría ser componentes visuales, componentes de la lógica del negocio, o objetos concurrentes en el tiempo. Factory(Patrón Factoria)

19 La clase factoría devuelve una instancia de un objeto según los datos que se le pasan como parámetros. Para que la creación centralizada de objetos sea útil y eficaz todos los objetos creados deben descender de la misma clase o implementar el mismo interface (es decir, hagan una operación similar pero de distintas formas), asi podemos usarlos todos de la misma manera, con los mismos métodos (polimorfismo). Factory(Patrón Factoria)

20 Los objetos Factoria tienen ventajas como: Separan la responsabilidad de la crecion compleja en objetos de apoyo (helpers). Ocultan la logica de creacion potencialmente compleja. Permiten introducir estrategias para mejorar el rendimiento de la gestion de la memoria, objetos cache o de reciclaje. Factory(Patrón Factoria)

21 Suponiendo la clase base figura para un conjunto de figuras geometricas: public abstract Figura { int lado = 0 public figura (int lado) { this.lado = lado; } public abstract int getArea (); public abstract void dibujar (Graphics g, int x, int y); } Factory(Patrón Factoria)

22 Ahora una clase hija cuadrado: public Cuadrado { public Cuadrado (int lado) { super (lado); } public int getArea () { return (lado x lado); } public void dibujar (Graphics g, int x, int y) { g.setColor (Color.black); g.setDrawRect (x, y, lado, lado); } Factory(Patrón Factoria)

23 Ahora otra clase hija, circulo: public Circulo { public Circulo (int lado) { super (lado); } public int getArea () { return (Math.PI x lado x lado); } public void dibujar (Graphics g, int x, int y) { g.setColor (Color.black); g.setDrawArc (x, y, lado, lado, 0, 360); } Factory(Patrón Factoria)

24 Esta factoría funciona recibiendo un argumento que determina que clase de figura crear: public void FactoriaDeFiguras { public static final int CUADRADO = 0 public static final int CIRCULO = 1 public Figura getFigura (int tipo, int lado) { if (tipo == this.CUADRADO) { return (new Cuadrado (lado)) } else { return (new Circulo (lado)) } Factory(Patrón Factoria)

25 Singleton (Patrón Unitario) ¿Qué es un Singletón? Un singleton es una clase que tiene una lógica que solamente le permite instanciarse una vez en un objeto, es decir, que solamente se podrá llamar a su constructor una sola vez.

26 Singleton (Patrón Unitario) En Computación, el patrón de diseño singleton (patrón unitario) está diseñado para restringir la instanciación de una clase o valor de un tipo a un solo o eventualmente muy pocos objetos. Resulta muy útil cuando por ejemplo se necesita un único objeto que coordina acciones en un sistema. Algunas veces se utiliza también en aplicaciones en donde resulta más eficiente trabajar con uno o muy pocos objetos.

27 Singleton (Patrón Unitario) Es importante para algunas clases tener exactamente una sola instancia. Por ejemplo: Aunque puede haber muchas impresoras en un sistema, debe haber solo una cola de impresora. Deberá haber sólo un sistema de archivos y un manejador de ventanas. Una cuenta de sistema estará dedicada a servir a una compañía

28 Singleton (Patrón Unitario) El propósito de este patrón es asegurar que una clase solo tenga una instancia, y proveer un punto global de acceso a ella. Se debe usar el patrón Singleton cuando: Debe haber exactamente una instancia de la clase, y debe ser accesible a los clientes desde un punto de acceso bien conocido.

29 Singleton (Patrón Unitario) Cuando la única instancia debe ser extensible solo por subclase, y los clientes deben ser capaces de usar una instancia extendida sin modificar su código. El sistema solo necesita emplear una única instancia de una clase. La clase debe ser accesible desde diferentes partes del sistema.

30 Singleton (Patrón Unitario) Las clases que cumplen estas características suelen tener alguna de estas funciones: Controlar el acceso a un recurso que por su naturaleza no admite el acceso concurrente (impresora, socket, fichero). Obtener referencias de clases que actúan como servidoras de recursos (pool de conexiones).

31 Singleton (Patrón Unitario) Ejecutar código carente de estado (si el estado no cambia solo necesitamos una instancia). Mantener un estado que debe ser globalmente único.

32 Singleton (Patrón Unitario) El patrón singleton se implementa creando una clase con un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

33 Singleton (Patrón Unitario) La instrumentación del patrón puede ser delicada en programas con múltiples hilos de ejecución. Si dos hilos de ejecución intentan crear el valor único al mismo tiempo y éste no existe todavía, sólo uno de ellos debe lograr crear el objeto. La solución clásica para este problema es utilizar exclusión mutua en método de creación de la clase que implementa el patrón.

34 Singleton (Patrón Unitario) Esta es una implementación en el lenguaje de programación Java de una clase Singleton: /** *Clase que implementa el patrón singleton * *Para obtener el valor de la clase, ejecutar *Singleton.getInstance() */

35 Singleton (Patrón Unitario) public class Singleton { /** *Para permitir la extensión de la clase, el *constructor se define como protegido. */ protected Singleton() { //... }

36 Singleton (Patrón Unitario) /** *Acceso privado al único objeto de la clase */ static private Singleton instance = null; /** El único objeto de la clase. */ static public Singleton getInstance() { if(null == instance) { instance = new Singleton(); } return instance; }


Descargar ppt "Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO JESSICA MANRIQUE MOLINA YORLEY REYES GARCIA CARLOS ALBERTO VERGARA."

Presentaciones similares


Anuncios Google