Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Design patterns-UniAndes PDF
Design patterns-UniAndes PDF
Rubby Casallas
Departamento de Ingeniería de
Sistemas y Computación
Universidad de los Andes
1
Referencias
2
Agenda
3
Cómo los patrones de diseño
resuelven problemas de diseño
Los problemas:
Encontrar los objetos apropiados
Determinar la granularidad de los objetos
Especificar las interfaces
Especificar las implementaciones
4
Encontrar los objetos apropiados
5
Encontrar los objetos apropiados
7
Interfaces
<<Interface>>
javax. sql.DataSou rce
OntologyDB u ses Connection getConnect ion()
Connection getConnect ion(String username, String passw ord)
PrintW rit er getLogW riter()
void setLogW riter(PrintW riter out)
8
Interfaces
Ventajas:
No hay acoplamiento entre la clase cliente de la
interface y la implementación
Quiere decir que la implementación se puede cambiar
sin tener que cambiar el cliente de la interface
El diseñador y el programador de la clase cliente
no necesita saber cómo esta realizada la
implementación y
No necesita tener la implementación para diseñar
el cliente
9
Delegación
ModelFacade DOMStrategy
createOntologyModel() createOntologyModel()
createOntologyModel()
{
OntologyModel om = ds.createOntologyModel();
}
10
Delegación
Ventajas
Es fácil componer comportamientos en ejecución
y cambiar la forma en que están compuestos
Es una manera de remplazar la herencia que
implica un alto grado de acoplamiento
11
Patrones de creacón de objetos: Fábricas
Fábrica simple:
Se define una clase que crea objetos de otras
Método fábrica:
Se define una interface para crear objetos
se delega a las subclases implementar la creación de
un producto concreto concreto
Abstract Factory:
Se define una interface (o una clase abstracta) para
crear objetos de alguna familia sin especificar la clase
en concreto
Se delega a las subclases implementar la creación de
los productos concretos concreto
Fábrica simple
public class FactoriaJuegos {
public static Juego getJuego( String
nombreJuego ) {
if ( nombreJuego.equals("JuegoDelDado") )
return new JuegoDelDado();
else {
if (nombreJuego.equals("JuegoDeMoneda") )
return new JuegoDeMoneda();
else
return null;
}
}
}
Factory Method
public abstract class Creator {
17
Factory Method
C lie n t
im p le m e n t s
C o n c re t e C re a t o r C o n c re t P ro d u c t
18
Factory Method
19
Factory Method en Java
SAXParserFactory factory = SAXParserFactory.newInstance();
20
Factory Method en Java
<<abstract>>
javax.xml.parsers.SAXParserFactory
SAXStrategy uses
static SAXParserFactory newInstance()
abstract SAXParser newSAXParser()
<<concrete>> OtherConcreteFactory
org.apache.xerces.jaxp.SAXParserFactoryImpl
creates
uses
<<abstract>>
javax.xml.parsers.SAXParser
<<concrete>>
org.apache.xerces.jaxp.SAXParserImpl
21
Abstract Factory
Abstract Factory
23
Abstract Factory
Estrategia de solución:
Dado un conjunto de clases abstractas
relacionadas (por ejemplo, la ventana, el menú, el
panel, etc.) proveer una forma para crear
instancias concretas.
El cliente puede decidir cuál fábrica utilizará en el
último momento (puede ser un valor parámetro al
momento de la ejecución)
Para el resto del código, el cliente sólo utiliza las
clases abstractas
24
Abstract Factory
25
Strategy
26
Strategy
<<abstract>>
ParserStrategy
ModelFacade
DOMStrategy SAXStrategy
createOntologyModel() createOntologyModel()
27
Builder
28
Builder
Client
<<Interface>>
Director
Builder
Construct() : Product
BuildPart()
builder.BuildPart()
ConcretBuilder
Product
BuildPart()
GetResult()
29
Strategy
public class CompanyTaxStrategy implements TaxStrategy<Company> {
http://www.javaspecialists.eu/archive/Issue123.html