Escolar Documentos
Profissional Documentos
Cultura Documentos
Patronesdediseo
Organizacin
Propsito: De Creacin
Tiene que ver con el proceso de creacin. Delega alguna parte del proceso de creacin de objetos en otro objeto
mbito: Objeto
Se aplica principalmente a objetos. Tratan con las relaciones entre objetos, que pueden cambiarse en tiempo de ejecucin y son muy dinmicas.
Prototipo: configurar fbricas dinmicamente Singleton: instancia nica Factory method: implementado usando
Propsito
Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre s, sin especificar sus clases concretas.
Motivacin
Desarrollar un toolkit de creacin de laberintos que admita mltiples interfaces grficas de visualizacin.
Ejemplo
Fbrica Abstracta:
Declara una interfaz para crear cada tipo bsico de laberinto.
FbricadeLaberintos
Ejemplo
Fbrica Concreta:
Implementa las operaciones para crear objetos producto concretos.
FbricadeLaberintos2D FbricadeLaberintos3D
Ejemplo
Producto Abstracto:
Ejemplo
Producto Concreto:
Define un objeto producto que sea creado por la fbrica correspondiente. Implementa la interfaz Producto Abstracto
Ventana2D, Laberinto2D, Habitacin2D, Pared2D, ParedPuerta2D, Jugador2D Ventana3D, Laberinto3D, Habitacin3D, Pared3D, ParedPuerta3D, Jugador3D
Ejemplo
Cliente:
Slo usa interfaces declaradas por las clases Fbrica Abstracta y Producto Abstracto
Ejemplo
Ejemplo
Ventana ventana = fbrica.ConstruirVentana(); Jugador jugador = fbrica.ConstruirJugador(); Laberinto laberinto = fbrica.ConstruirLaberinto(); Habitacion habitacin = fbrica.ConstruirHabitacin(parmetros); habitacin.EstablecerLado(Norte, fbrica.ConstruirPared()); habitacin.EstablecerLado(Sur, fbrica.ConstruirPared()); habitacin.EstablecerLado(Este, fbrica.ConstruirParedPuerta()); habitacin.EstablecerLado(Oeste, fbrica.ConstruirPared()); laberinto.AadirHabitacin(habitacin); laberinto.Start(Ventana, jugador); No usa cdigo de una implementacin o fbrica particular. El mismo cdigo funcionar con diferentes tipos de fbricas.
FbricaDeLaberintos2D
FbricaDeLaberintos3D
Aplicabilidad
Un sistema que debe ser independiente de cmo se crean, componen y representan sus productos. Un sistema que debe ser configurado con una familia de productos de entre varias.
Aplicabilidad
Una familia de objetos producto relacionados est diseada para ser usada conjuntamente, y esta restriccin es necesaria. Proporcionar una biblioteca de clases de productos, y solo revelar sus interfaces, no sus implementaciones
Colaboraciones
Normalmente slo se crea una nica instancia de una FbricaConcreta en tiempo de ejecucin, que crea objetos que tienen una determinada implementacin. FbricaAbstracta delega la creacin de objetos producto en su subclase FbricaConcreta.
Consecuencias
Asla las clases concretas Facilita el intercambio de familias de productos. Promueve la consistencia entre productos. Es difcil dar cabida a nuevos tipos de productos.