1 of 22

Diseño de Sistemas

2 of 22

Agenda

de la clase

  • El problema creacional
  • Dudas comunes
  • Qué Me Pongo: Iteración 2
  • Actividades para la próxima clase

2

3 of 22

1.

Patrones creacionales

Time to be born

3

4 of 22

Patrones

Creacionales

Instanciar vs. Construir

4

5 of 22

Factory

Method

5

6 of 22

Factory

Method

  • Sabe instanciar y configurar un objeto
  • Hace un new y retorna lo creado
  • Encapsula complejidad de construcción
  • Usualmente es un “hook method”
  • Resuelve configuraciones análogas pero variadas

6

7 of 22

Patrón

Builder

7

8 of 22

Patrón

Builder

  • Encapsula complejidad de construcción
  • Mantiene estado interno
  • Permite diferir construcción en el tiempo
  • Provee valores default
  • Es fácil de configurar (usar) por su interfaz
  • Garantiza objetos consistentes
  • Es un Contrato débil

8

9 of 22

Abstract

Factory

  • Es la generalización del Factory Method
  • Maneja estructuras similares con ‘piezas’ diferentes
  • La clase abstracta sabe como construir la estructura
  • Las clases concretas saben construir las ‘piezas’

9

10 of 22

10

Preguntas?

11 of 22

2.

Consultas

A repasar lo que no quedó claro

11

12 of 22

Sobre Hook-method, me quede con la duda de si es el que queda definido en la abstract class o es el comportamiento que implementa cada subclase.

12

13 of 22

No me quedo clara la difernecia del Abstract Factory con el factory method, tambien deja la instanciación a sus subclases que respetan la interfaz con las particularidades de cada una.

Vendria a ser como un agrupamiento de factory methods ?

13

14 of 22

Singleton sería un well–known object enmascarado?

14

15 of 22

Me hace un poco de ruido en el Builder, si bien sirve para delegar la creación de diversos "tipos" de objetos… No estamos agregando demasiada complejidad al código en cierto punto?

15

16 of 22

El builder me suena a una clase abstracta en la que todos sus métodos son overrideados por las subclases, y eso en teoría no era bueno.

Qué me estoy perdiendo?

16

17 of 22

Se me hace medio complicado saber cuándo usar cada patrón creacional

17

18 of 22

18

Más

preguntas?

19 of 22

3.

QMP II: puesta en común

Cómo encarar el diseño de la solución a un problema

19

20 of 22

20

Preguntas?

Algo no te convenció?

21 of 22

Para la clase que viene

Les estaremos enviando un email con:

  • Apuntes para que lean
  • Un ejercicio para que vayan pensando
  • Un form para que entreguen un primer planteo de la solución

Recuerden enviar consultas al foro

21

22 of 22

Muchas Gracias!!

Si tienen consultas

https://github.com/dds-jv/foro

22