SlideShare una empresa de Scribd logo
PROGRAMACIÓN
ORIENTADA A
OBJETOS
Patrones de diseño
Agenda
 Patrones de diseño
 Definición
 Tipos
 MVC
 Antecedentes
 Definiciones
 Patrón de diseño
 Ventajas y Desventajas
Patrones de diseño
Patrón de diseño: Definición
 Un patrón de diseño:
 es una solución a un problema en un contexto
particular
 es recurrente (lo que hace la solución relevante a
otras situaciones)
 enseña (permite entender cómo adaptarlo a la
variante particular del problema donde se quiere
aplicar)
 tiene un nombre para referirse al patrón
 Los patrones facilitan la reutilización de diseños y
arquitecturas software que han tenido éxito
 están basados en las buenas práctica de POO
Patrones de
Creación
Patrones de
Comportamiento
Patrones
estructurales
Patrón de diseño: Tipos
Patrón de diseño: Tipos
Patrones de
Creación
Patrones de
Comportamiento
Patrones
estructurales
Patrón de diseño: Tipos
Patrón de diseño: Tipos
 Patrones de Creación
 Abstraen la forma en la que se crean los objetos,
permitiendo la creación de las clases de forma genérica
dejando para más tarde la decisión de qué clases crear o
cómo crearlas
 Ejemplos
 Factory
 Singleton
 Prototype
 Clasificación
 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
 Patrones de creación de objeto: se modifica la clase desde el
objeto
Patrones de
Creación
Patrones de
Comportamiento
Patrones
estructurales
Patrón de diseño: Tipos
Patrón de diseño: Tipos
 Patrones de Comportamiento
 Estudian las relaciones entre llamadas entre los
diferentes objetos, normalmente ligados con la
dimensión temporal.
 Ejemplos
 Observador
 Estrategia
Patrones de
Creación
Patrones de
Comportamiento
Patrones
estructurales
Patrón de diseño: Tipos
Patrón de diseño: Tipos
 Patrones Estructurales
 Hacen relación a como las clases y los objetos se
combinan para dar lugar a estructuras más
complejas.
 Ejemplos
 Adapter: Patrones estructurales asociados a clases y
utilizan la herencia.
 Composite, Decorator, Facade: Patrones estructurales
asociados a objetos y utilizan la composición.
Patrón de diseño: Singleton
 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.
 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
Patrones
de
Creación
Patrón de diseño: Singleton
 Ejemplo
public class Singleton {
/**
*Para permitir la extensión de la clase, el *constructor se define
como protegido.
*/
protected Singleton() {
// ...
}
/**
*Acceso privado al único objeto de la clase
*/
static private Singleton instance = null;
static public Singleton getInstance() {
if(null == instance) {
instance = new Singleton();
}
return instance;
}
Patrones
de
Creación
Patrón de diseño: Factory
 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.
Patrones
de
Creación
Patrón de diseño: Factory
 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.
Patrones
de
Creación
Patrón de diseño: Factory
 Ejemplo
 Suponiendo la clase base figura para un conjunto de
figuras geométricas:
public abstract class 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);
}
Patrones
de
Creación
Patrón de diseño: Factory
public Cuadrado extends Figura{
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);
}
}
public Circulo extends Figura{
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);
}
}
Clase hija cuadrado Clase hija círculo
Patrón de diseño: Factory

Esta factoría funciona recibiendo un argumento que
determina que clase de figura crear:
public class 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))
}
}
}
Patrones
de
Creación
Que figura
crear
Factoría
Patrón de diseño: Factory
public abstract class Automovil {
protected String modelo;
protected String color;
protected int potencia;
protected double espacio;
public Automovil(String modelo, String color,
int potencia, double espacio) {
this.modelo = modelo;
this.color = color;
this.potencia = potencia;
this.espacio = espacio;
}
public abstract String
mostrarCaracteristicas();
}
public class AutomovilElectricidad extends
Automovil{
public AutomovilElectricidad(String modelo,
String color, int potencia, double espacio) {
super(modelo, color, potencia, espacio);
}
@Override
public String mostrarCaracteristicas() {
return "Automovil electrico{" + "modelo="
+ modelo + ", color=" + color + ", potencia=" +
potencia + ", espacio=" + espacio + '}';
}
}
Patrón de diseño: Factory
public class AutomovilGasolina extends
Automovil{
public AutomovilGasolina(String
modelo, String color, int potencia, double
espacio) {
super(modelo, color, potencia,
espacio);
}
@Override
public String mostrarCaracteristicas() {
return "Automovil gasolina{" +
"modelo=" + modelo + ", color=" + color
+ ", potencia=" + potencia + ", espacio="
+ espacio + '}';
}
}
public abstract class Scooter {
protected String modelo;
protected String color;
protected int potencia;
public Scooter(String modelo, String
color, int potencia) {
this.modelo = modelo;
this.color = color;
this.potencia = potencia;
}
public abstract String
mostrarCaracteristicas();
}
Patrón de diseño: Factory
public class ScooterElectricidad extends
Scooter{
public ScooterElectricidad(String
modelo, String color, int potencia) {
super(modelo, color, potencia);
}
@Override
public String mostrarCaracteristicas() {
return "Scooter electrico{" +
"modelo=" + modelo + ", color=" + color
+ ", potencia=" + potencia + '}';
}
}
public class ScooterGasolina extends
Scooter{
public ScooterGasolina(String modelo,
String color, int potencia) {
super(modelo, color, potencia);
}
@Override
public String mostrarCaracteristicas() {
return "Scooter gasolina{" +
"modelo=" + modelo + ", color=" + color
+ ", potencia=" + potencia + '}';
}
}
Patrón de diseño: Factory
public interface FabricaVehiculo {
public Automovil crearAutomovil(String modelo, String color,
int potencia, double espacio);
public Scooter crearScooter(String modelo, String color, int
potencia);
}
public class FabricaVehiculoGasolina implements
FabricaVehiculo{
@Override
public Automovil crearAutomovil(String modelo, String color,
int potencia, double espacio){
return new AutomovilGasolina(modelo, color, potencia,
espacio);
}
@Override
public Scooter crearScooter(String modelo, String color, int
potencia){
return new ScooterGasolina(modelo, color, potencia);
}
}
public class FabricaVehiculoElectricidad implements
FabricaVehiculo{
@Override
public Automovil crearAutomovil(String modelo, String color,
int potencia, double espacio){
return new AutomovilElectricidad(modelo, color, potencia,
espacio);
}
@Override
public Scooter crearScooter(String modelo, String color, int
potencia){
return new ScooterElectricidad(modelo, color, potencia);
}
}
Patrón de diseño: Factory
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
FabricaVehiculo fabrica;
Automovil [] autos = new Automovil[nAutos];
Scooter [] scooters = new Scooter[nScooters];
System.out.println("Desea utilizar: 1. Vehículos eléctricos 2. Vehículos de gasolina");
String eleccion = reader.next();
if(eleccion.equals("1")){
fabrica = new FabricaVehiculoElectricidad();
}
else{
fabrica = new FabricaVehiculoGasolina();
}
System.out.println("----- Creando Automóviles -----");
for(int i = 0; i < nAutos; i++){
System.out.println("Digite el modelo");
String modelo = reader.next();
System.out.println("Digite el color");
String color = reader.next();
System.out.println("Digite la potencia");
String potencia = reader.next();
System.out.println("Digite el espacio");
String espacio = reader.next();
autos[i] = fabrica.crearAutomovil(modelo, color, Integer.parseInt(potencia),
Integer.parseInt(espacio));
}
System.out.println("----- Creando Scooters -----");
for(int i = 0; i < nScooters; i++){
System.out.println("Digite el modelo");
String modelo = reader.next();
System.out.println("Digite el color");
String color = reader.next();
System.out.println("Digite la potencia");
String potencia = reader.next();
scooters[i] = fabrica.crearScooter(modelo, color, Integer.parseInt(potencia)
}
System.out.println("----- Información Automóviles -----");
for(Automovil auto : autos){
System.out.println(auto.mostrarCaracteristicas());
}
System.out.println("----- Información Scooters -----");
for(Scooter scooter : scooters){
System.out.println(scooter.mostrarCaracteristicas());
}
}

Más contenido relacionado

Similar a Patrones de diseño.pptx

Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuana
javier
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
José Antonio Sandoval Acosta
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
juansoto86
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
BenaventeSolorzanoCa
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Astrid Bermudez
 
Cuadrado y cubo de un numero
Cuadrado y cubo de un numeroCuadrado y cubo de un numero
Cuadrado y cubo de un numero
Robert Wolf
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
Alexandra Pérez
 
Semana 2 Clases y Objetos en Java
Semana 2   Clases y Objetos en JavaSemana 2   Clases y Objetos en Java
Semana 2 Clases y Objetos en Java
Richard Eliseo Mendoza Gafaro
 
Autodesk revit structure 2009
Autodesk revit structure 2009Autodesk revit structure 2009
Autodesk revit structure 2009
Rolly Huacaychuco Malla
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Jordi Cabot
 
Tema5
Tema5Tema5
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
Diego Calderon
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
Micael Gallego
 
Unidad o informatica
Unidad o informaticaUnidad o informatica
Unidad o informatica
Marisa Torrecillas
 
Decorator
DecoratorDecorator
Decorator
Mario Rodriguez
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
RochaJaqueline
 
uso Constructores
uso Constructoresuso Constructores
uso Constructores
liliquinl
 
Análisis sig con model builder
Análisis sig con model builderAnálisis sig con model builder
Análisis sig con model builder
Juan Salcedo
 
Constructores uso
Constructores usoConstructores uso
Constructores uso
liliquinl
 

Similar a Patrones de diseño.pptx (20)

Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuana
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Cuadrado y cubo de un numero
Cuadrado y cubo de un numeroCuadrado y cubo de un numero
Cuadrado y cubo de un numero
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 
Semana 2 Clases y Objetos en Java
Semana 2   Clases y Objetos en JavaSemana 2   Clases y Objetos en Java
Semana 2 Clases y Objetos en Java
 
Autodesk revit structure 2009
Autodesk revit structure 2009Autodesk revit structure 2009
Autodesk revit structure 2009
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulos
 
Tema5
Tema5Tema5
Tema5
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
 
Unidad o informatica
Unidad o informaticaUnidad o informatica
Unidad o informatica
 
Decorator
DecoratorDecorator
Decorator
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
uso Constructores
uso Constructoresuso Constructores
uso Constructores
 
Análisis sig con model builder
Análisis sig con model builderAnálisis sig con model builder
Análisis sig con model builder
 
Constructores uso
Constructores usoConstructores uso
Constructores uso
 

Último

Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
raulnilton2018
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
JaimmsArthur
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
angiepalacios6170
 
Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....
lawjose243
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
michiotes33
 
Aletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdfAletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdf
elsanti003
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
jhunior lopez rodriguez
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
munozvanessa878
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTADIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
MayDaniel2
 
MECÁNICA DE SUELOS I - Comportamiento suelos granulares
MECÁNICA DE SUELOS I - Comportamiento suelos granularesMECÁNICA DE SUELOS I - Comportamiento suelos granulares
MECÁNICA DE SUELOS I - Comportamiento suelos granulares
Fernando878837
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
LuisLobatoingaruca
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
cristiaansabi19
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
jemifermelgarejoaran1
 
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTOOPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
GERARDO GONZALEZ
 

Último (20)

Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
 
Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
 
Aletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdfAletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdf
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTADIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
DIAGRAMA SIPOC INGENIERIA INDUSTRIAL HERRAMIENTA
 
MECÁNICA DE SUELOS I - Comportamiento suelos granulares
MECÁNICA DE SUELOS I - Comportamiento suelos granularesMECÁNICA DE SUELOS I - Comportamiento suelos granulares
MECÁNICA DE SUELOS I - Comportamiento suelos granulares
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
 
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTOOPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
OPERACIONES BÁSICAS (INFOGRAFIA) DOCUMENTO
 

Patrones de diseño.pptx

  • 2. Agenda  Patrones de diseño  Definición  Tipos  MVC  Antecedentes  Definiciones  Patrón de diseño  Ventajas y Desventajas
  • 4.
  • 5. Patrón de diseño: Definición  Un patrón de diseño:  es una solución a un problema en un contexto particular  es recurrente (lo que hace la solución relevante a otras situaciones)  enseña (permite entender cómo adaptarlo a la variante particular del problema donde se quiere aplicar)  tiene un nombre para referirse al patrón  Los patrones facilitan la reutilización de diseños y arquitecturas software que han tenido éxito  están basados en las buenas práctica de POO
  • 9. Patrón de diseño: Tipos  Patrones de Creación  Abstraen la forma en la que se crean los objetos, permitiendo la creación de las clases de forma genérica dejando para más tarde la decisión de qué clases crear o cómo crearlas  Ejemplos  Factory  Singleton  Prototype  Clasificación  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  Patrones de creación de objeto: se modifica la clase desde el objeto
  • 11. Patrón de diseño: Tipos  Patrones de Comportamiento  Estudian las relaciones entre llamadas entre los diferentes objetos, normalmente ligados con la dimensión temporal.  Ejemplos  Observador  Estrategia
  • 13. Patrón de diseño: Tipos  Patrones Estructurales  Hacen relación a como las clases y los objetos se combinan para dar lugar a estructuras más complejas.  Ejemplos  Adapter: Patrones estructurales asociados a clases y utilizan la herencia.  Composite, Decorator, Facade: Patrones estructurales asociados a objetos y utilizan la composición.
  • 14. Patrón de diseño: Singleton  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.  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 Patrones de Creación
  • 15. Patrón de diseño: Singleton  Ejemplo public class Singleton { /** *Para permitir la extensión de la clase, el *constructor se define como protegido. */ protected Singleton() { // ... } /** *Acceso privado al único objeto de la clase */ static private Singleton instance = null; static public Singleton getInstance() { if(null == instance) { instance = new Singleton(); } return instance; } Patrones de Creación
  • 16. Patrón de diseño: Factory  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. Patrones de Creación
  • 17. Patrón de diseño: Factory  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. Patrones de Creación
  • 18. Patrón de diseño: Factory  Ejemplo  Suponiendo la clase base figura para un conjunto de figuras geométricas: public abstract class 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); } Patrones de Creación
  • 19. Patrón de diseño: Factory public Cuadrado extends Figura{ 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); } } public Circulo extends Figura{ 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); } } Clase hija cuadrado Clase hija círculo
  • 20. Patrón de diseño: Factory  Esta factoría funciona recibiendo un argumento que determina que clase de figura crear: public class 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)) } } } Patrones de Creación Que figura crear Factoría
  • 21. Patrón de diseño: Factory public abstract class Automovil { protected String modelo; protected String color; protected int potencia; protected double espacio; public Automovil(String modelo, String color, int potencia, double espacio) { this.modelo = modelo; this.color = color; this.potencia = potencia; this.espacio = espacio; } public abstract String mostrarCaracteristicas(); } public class AutomovilElectricidad extends Automovil{ public AutomovilElectricidad(String modelo, String color, int potencia, double espacio) { super(modelo, color, potencia, espacio); } @Override public String mostrarCaracteristicas() { return "Automovil electrico{" + "modelo=" + modelo + ", color=" + color + ", potencia=" + potencia + ", espacio=" + espacio + '}'; } }
  • 22. Patrón de diseño: Factory public class AutomovilGasolina extends Automovil{ public AutomovilGasolina(String modelo, String color, int potencia, double espacio) { super(modelo, color, potencia, espacio); } @Override public String mostrarCaracteristicas() { return "Automovil gasolina{" + "modelo=" + modelo + ", color=" + color + ", potencia=" + potencia + ", espacio=" + espacio + '}'; } } public abstract class Scooter { protected String modelo; protected String color; protected int potencia; public Scooter(String modelo, String color, int potencia) { this.modelo = modelo; this.color = color; this.potencia = potencia; } public abstract String mostrarCaracteristicas(); }
  • 23. Patrón de diseño: Factory public class ScooterElectricidad extends Scooter{ public ScooterElectricidad(String modelo, String color, int potencia) { super(modelo, color, potencia); } @Override public String mostrarCaracteristicas() { return "Scooter electrico{" + "modelo=" + modelo + ", color=" + color + ", potencia=" + potencia + '}'; } } public class ScooterGasolina extends Scooter{ public ScooterGasolina(String modelo, String color, int potencia) { super(modelo, color, potencia); } @Override public String mostrarCaracteristicas() { return "Scooter gasolina{" + "modelo=" + modelo + ", color=" + color + ", potencia=" + potencia + '}'; } }
  • 24. Patrón de diseño: Factory public interface FabricaVehiculo { public Automovil crearAutomovil(String modelo, String color, int potencia, double espacio); public Scooter crearScooter(String modelo, String color, int potencia); } public class FabricaVehiculoGasolina implements FabricaVehiculo{ @Override public Automovil crearAutomovil(String modelo, String color, int potencia, double espacio){ return new AutomovilGasolina(modelo, color, potencia, espacio); } @Override public Scooter crearScooter(String modelo, String color, int potencia){ return new ScooterGasolina(modelo, color, potencia); } } public class FabricaVehiculoElectricidad implements FabricaVehiculo{ @Override public Automovil crearAutomovil(String modelo, String color, int potencia, double espacio){ return new AutomovilElectricidad(modelo, color, potencia, espacio); } @Override public Scooter crearScooter(String modelo, String color, int potencia){ return new ScooterElectricidad(modelo, color, potencia); } }
  • 25. Patrón de diseño: Factory public static void main(String[] args) { Scanner reader = new Scanner(System.in); FabricaVehiculo fabrica; Automovil [] autos = new Automovil[nAutos]; Scooter [] scooters = new Scooter[nScooters]; System.out.println("Desea utilizar: 1. Vehículos eléctricos 2. Vehículos de gasolina"); String eleccion = reader.next(); if(eleccion.equals("1")){ fabrica = new FabricaVehiculoElectricidad(); } else{ fabrica = new FabricaVehiculoGasolina(); } System.out.println("----- Creando Automóviles -----"); for(int i = 0; i < nAutos; i++){ System.out.println("Digite el modelo"); String modelo = reader.next(); System.out.println("Digite el color"); String color = reader.next(); System.out.println("Digite la potencia"); String potencia = reader.next(); System.out.println("Digite el espacio"); String espacio = reader.next(); autos[i] = fabrica.crearAutomovil(modelo, color, Integer.parseInt(potencia), Integer.parseInt(espacio)); } System.out.println("----- Creando Scooters -----"); for(int i = 0; i < nScooters; i++){ System.out.println("Digite el modelo"); String modelo = reader.next(); System.out.println("Digite el color"); String color = reader.next(); System.out.println("Digite la potencia"); String potencia = reader.next(); scooters[i] = fabrica.crearScooter(modelo, color, Integer.parseInt(potencia) } System.out.println("----- Información Automóviles -----"); for(Automovil auto : autos){ System.out.println(auto.mostrarCaracteristicas()); } System.out.println("----- Información Scooters -----"); for(Scooter scooter : scooters){ System.out.println(scooter.mostrarCaracteristicas()); } }

Notas del editor

  1. Tratan de la inicialización y configuración de clases y objetos
  2. Strategy modifica la lógica de los objetos individuales El patrón Strategy proporciona objetos que implementan un interface particular con el propósito de alterar o determinar el comportamiento de un objeto cliente Ejemplo: El patrón Strategy tiene un interface llamado Ordenacion que proporciona una forma común para acceder al algoritmo de ordenación encapsulado en sus subclases, es decir en las clases que implementan el interface Ordenacion, que en este caso son: AlgBurbujaAsc y AlgBurbujaDesc. También existe otra clase llamada Algoritmos que es la que controla la selección y uso del objeto particular Strategy. Es decir mediante esta clase se selecciona el algoritmo a utilizar, en nuestro caso AlgBurbujaAsc o AlgBurbujaDesc y se llama a su método ordenar correspondiente.