8 Patrones de Diseño - Creacion PDF
8 Patrones de Diseño - Creacion PDF
Introduccin.
Patrones.
Descripcin de los Patrones.
Ejemplo: Patrones en el MVC de Smalltalk.
El catlogo de patrones.
Patrones de Creacin.
Patrones Estructurales.
Patrones de Comportamiento.
habitualmente
Hardware
Software
Problema
Solucin
Patrones de diseo
Nombre
Problema
Solucin: Descripcin abstracta
Consecuencias
detalles de la implementacin.
Un patrn es una descripcin del problema y
la esencia de su solucin, que se puede
reutilizar en casos distintos.
Es una solucin adecuada a un problema
comn.
Asociado a orientacin a objetos, pero el
principio general es aplicable a todos los
enfoques de diseo software.
Problema.
Solucin.
Consecuencias.
Arquitecturales Bushman
Larman
Gamma
Bushman
Grand
10
23
17
41
patrones
patrones
patrones
patrones
Experto
Creador
GRASP
Bajo acoplamiento
Alta Cohesin
PATRONES
Controlador
GOF
Creacionales
Instancia nica,
mtodo de fabricacin ,
Fabrica, constructor, prototipo .
Estructurales
Comportamiento
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Singleton
Factory Method
Abstract Factory
Builder
Prototype
Objetivo:
Nombres:
nico
Ejemplo:
Objetivo:
Nombres:
Ejemplo:
Conexiones mltiples
Creador
<<Abstract>>
Producto
MetodoDeFabricacion()
UnaOperacion()
CreadorConcreto
ProductoConcretoA
ProductoConcretoB
MetodoDeFabricacion()
<<creates>>
...
producto = MetodoDeFabricacion()
...
Contabilidad
<<Abstract>>
Conexion
MetodoDeFabricacion()
UnaOperacion()
Fabrica
SqlConexion
OracleConexion
creaConexion()
<<creates>>
...
miConexion= miFab.creaConexion()
...
Fabrica
Oracle
MySql
Sql
Server
PostgreSql
Conexion
<<Abstract>>
Conexion
OracleConexion
SqlConexion
Fabrica
OracleConexion
creaConexion()
<<creates>>
Objetivo:
Nombres:
Ejemplo:
<<Interface>>
IFabricaAbstracta
Cliente
CrearProductoA()
CrearProductoB()
IProductoA
FabricaConcreta1
CrearProductoA()
CrearProductoB()
FabricaConcreta2
<<creates>>
ProductoA2
ProductoA1
CrearProductoA()
CrearProductoB()
IProductoB
<<creates>>
ProductoB2
<<creates>>
ProductoB1
<<Interface>>
FabricaAbstracta
Pagos
creaConexion() : Conexion
Conexion
FabricaHeredada
CrearConexion()
<<creates>> OracleConexion
SqlConexion
<<Interface>>
FabricaAbstracta
creaConexion() : Conexion
FabricaHeredada
CrearConexion()
Conexion
OracleConexion
SqlConexion
Objetivo:
Nombres:
Constructor
Ejemplo:
Cliente
(from Logical View)
Director
-constructor
Constructor
Construir()
ConstruirParte()
ConstructorConcreto
<<creates>>
Producto
ConstruirParte()
ObtenerResultado()
Cliente
(from Logical View)
Builder
Construir()
-constructor
<<interface>>
Robot
trabajar()
cargaAcciones()
RobotHotDog
trabajar()
cargaAcciones()
trabajar()
cargaAcciones()
<<creates>>
ProductoHam
ProductoHot
<<interface>>
Robot
trabajar()
cargaAcciones()
RobotHamburguesa
RobotHotDog
trabajar()
cargaAcciones()
trabajar()
cargaAcciones()
RobotHamburguesa
trabajar()
cargaAcciones()
RobotHotDog
cargaAcciones()
Builder
Construir()
-constructor
<<interface>>
Robot
trabajar()
cargaAcciones()
Objetivo:
Nombres:
Prototipo
Ejemplo:
Prototype
Cliente
prototipo
p = prototipo->Clonar()
Clonar() : Prototype
PrototipoConcreto1
Clonar() : Prototype
PrototipoConcreto2
Clonar() : Prototype
prototipo
p = circulo.Clonar()
Figura
PruebaFiguras
Clonar() : Figura
Circulo
Cuadrado
Clonar() : Figura
Clonar() : Figura