From b66de16c31036331d89aa16e1c050e1788ddb8ca Mon Sep 17 00:00:00 2001 From: Daniel Alvarez Date: Mon, 13 Feb 2023 20:16:50 +0100 Subject: [PATCH] Subida Jaguar --- .../DirectivoPCompra.java | 15 ++++++++ .../DirectorPCompra.java | 15 ++++++++ .../patronChainOfResponsibility/Main.java | 29 ++++++++++++++ .../PeticionDeCompra.java | 37 ++++++++++++++++++ .../PoderDeCompra.java | 13 +++++++ .../PresidentePCompra.java | 19 ++++++++++ .../VicePresidentePCompra.java | 16 ++++++++ .../patronCommand/Interruptor.java | 21 ++++++++++ patronesComportamiento/patronCommand/Luz.java | 14 +++++++ .../patronCommand/Main.java | 23 +++++++++++ .../patronCommand/Orden.java | 5 +++ .../patronCommand/OrdenApagar.java | 17 +++++++++ .../patronCommand/OrdenEncender.java | 17 +++++++++ .../patronInterpreter/Context.java | 32 ++++++++++++++++ .../patronInterpreter/Expression.java | 38 +++++++++++++++++++ .../patronInterpreter/HundredExpression.java | 9 +++++ .../patronInterpreter/Main.java | 30 +++++++++++++++ .../patronInterpreter/OneExpression.java | 9 +++++ .../patronInterpreter/TenExpression.java | 9 +++++ .../patronInterpreter/ThousandExpression.java | 9 +++++ .../patronIterator/IteradorVector.java | 28 ++++++++++++++ .../patronIterator/Main.java | 19 ++++++++++ .../patronIterator/Vector.java | 32 ++++++++++++++++ .../patronMediator/Colega.java | 13 +++++++ .../patronMediator/ColegaConcreto1.java | 18 +++++++++ .../patronMediator/ColegaConcreto2.java | 18 +++++++++ .../patronMediator/Main.java | 18 +++++++++ .../patronMediator/Mediador.java | 5 +++ .../patronMediator/MediadorConcreto.java | 29 ++++++++++++++ .../patronMemento/Conserje.java | 18 +++++++++ .../patronMemento/Main.java | 23 +++++++++++ .../patronMemento/Memento.java | 14 +++++++ .../patronMemento/Originador.java | 21 ++++++++++ .../patronObserver/Cliente.java | 17 +++++++++ .../patronObserver/Electrodomestico.java | 34 +++++++++++++++++ .../patronObserver/Main.java | 22 +++++++++++ .../patronObserver/ObservableIF.java | 9 +++++ .../patronObserver/ObservadorIF.java | 7 ++++ .../patronState/Contexto.java | 17 +++++++++ .../patronState/Estado.java | 5 +++ .../patronState/EstadoConcretoA.java | 9 +++++ .../patronState/EstadoConcretoB.java | 10 +++++ patronesComportamiento/patronState/Main.java | 22 +++++++++++ .../patronStrategy/Contexto.java | 17 +++++++++ .../patronStrategy/Estrategia.java | 5 +++ .../patronStrategy/EstrategiaA.java | 10 +++++ .../patronStrategy/EstrategiaB.java | 10 +++++ .../patronStrategy/Main.java | 21 ++++++++++ .../patronTemplateMethod/Automovil.java | 20 ++++++++++ .../AutomovilAutomatico.java | 10 +++++ .../patronTemplateMethod/AutomovilManual.java | 10 +++++ .../patronTemplateMethod/Main.java | 17 +++++++++ .../patronVisitor/Main.java | 23 +++++++++++ .../patronVisitor/Nodo.java | 5 +++ .../patronVisitor/NodoA.java | 12 ++++++ .../patronVisitor/NodoB.java | 12 ++++++ .../patronVisitor/NodoC.java | 12 ++++++ .../patronVisitor/Visitante.java | 8 ++++ .../patronVisitor/VisitanteBajar.java | 21 ++++++++++ .../patronVisitor/VisitanteSubir.java | 21 ++++++++++ .../AbstractFactory.java | 5 +++ .../patronAbstractFactory/Boton.java | 5 +++ .../patronAbstractFactory/BotonLinux.java | 8 ++++ .../patronAbstractFactory/BotonWindows.java | 10 +++++ .../patronAbstractFactory/Cliente.java | 8 ++++ .../patronAbstractFactory/FabricaLinux.java | 10 +++++ .../patronAbstractFactory/FabricaWindows.java | 10 +++++ .../patronAbstractFactory/Main.java | 28 ++++++++++++++ patronesCreacion/patronBuilder/Cliente.java | 5 +++ patronesCreacion/patronBuilder/Cocina.java | 23 +++++++++++ .../patronBuilder/ConstructorPizzaHawai.java | 20 ++++++++++ .../ConstructorPizzaPicante.java | 19 ++++++++++ .../patronBuilder/ConstructorPizzas.java | 18 +++++++++ patronesCreacion/patronBuilder/Main.java | 26 +++++++++++++ patronesCreacion/patronBuilder/Pizza.java | 32 ++++++++++++++++ .../patronFactoria/Electrodomestico.java | 17 +++++++++ .../FactoriaElectrodomesticos.java | 20 ++++++++++ .../patronFactoria/FactoriaIF.java | 5 +++ patronesCreacion/patronFactoria/Horno.java | 12 ++++++ patronesCreacion/patronFactoria/Lavadora.java | 14 +++++++ patronesCreacion/patronFactoria/Main.java | 31 +++++++++++++++ .../patronFactoria/Microondas.java | 14 +++++++ .../patronFactoria/Television.java | 13 +++++++ patronesCreacion/patronPrototype/Circulo.java | 9 +++++ .../patronPrototype/Cuadrado.java | 9 +++++ patronesCreacion/patronPrototype/Figura.java | 22 +++++++++++ patronesCreacion/patronPrototype/Main.java | 30 +++++++++++++++ .../patronPrototype/Prototype.java | 5 +++ patronesCreacion/patronSingleton/Main.java | 22 +++++++++++ .../patronSingleton/Singleton.java | 18 +++++++++ .../patronSingleton/Singleton1.java | 16 ++++++++ .../patronAdapter/Guitarra.java | 6 +++ .../patronAdapter/GuitarraAcustica.java | 13 +++++++ .../patronAdapter/GuitarraElectrica.java | 19 ++++++++++ .../GuitarraElectricaAcustica.java | 19 ++++++++++ patronesEstructurales/patronAdapter/Main.java | 20 ++++++++++ .../patronBridge/Abstraccion.java | 6 +++ .../patronBridge/AbstraccionRefinada.java | 14 +++++++ .../patronBridge/Implementador.java | 5 +++ .../patronBridge/ImplementadorConcretoA.java | 9 +++++ .../patronBridge/ImplementadorConcretoB.java | 10 +++++ patronesEstructurales/patronBridge/Main.java | 22 +++++++++++ .../patronComposite/Componente.java | 14 +++++++ .../patronComposite/Compuesto.java | 30 +++++++++++++++ .../patronComposite/Hoja.java | 25 ++++++++++++ .../patronComposite/Main.java | 36 ++++++++++++++++++ .../patronDecorator/Componente.java | 5 +++ .../patronDecorator/ComponenteConcreto.java | 10 +++++ .../patronDecorator/Decorador.java | 13 +++++++ .../patronDecorator/DecoradorConcretoA.java | 17 +++++++++ .../patronDecorator/DecoradorConcretoB.java | 18 +++++++++ .../patronDecorator/Main.java | 25 ++++++++++++ .../patronFacade/Fachada.java | 19 ++++++++++ .../patronFacade/LibreriaLibros.java | 9 +++++ .../patronFacade/LibreriaMusica.java | 9 +++++ .../patronFacade/LibreriaVideos.java | 9 +++++ patronesEstructurales/patronFacade/Main.java | 13 +++++++ .../patronFlyWeight/FactoryFlyWeight.java | 23 +++++++++++ .../patronFlyWeight/Main.java | 15 ++++++++ .../patronFlyWeight/OrdenadorConcreto.java | 26 +++++++++++++ .../OrdenadorFWAsusScorpion15.java | 20 ++++++++++ patronesEstructurales/patronProxy/Imagen.java | 5 +++ .../patronProxy/ImagenProxy.java | 26 +++++++++++++ .../patronProxy/ImagenReal.java | 21 ++++++++++ patronesEstructurales/patronProxy/Main.java | 16 ++++++++ 125 files changed, 2050 insertions(+) create mode 100644 patronesComportamiento/patronChainOfResponsibility/DirectivoPCompra.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/DirectorPCompra.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/Main.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/PeticionDeCompra.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/PoderDeCompra.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/PresidentePCompra.java create mode 100644 patronesComportamiento/patronChainOfResponsibility/VicePresidentePCompra.java create mode 100644 patronesComportamiento/patronCommand/Interruptor.java create mode 100644 patronesComportamiento/patronCommand/Luz.java create mode 100644 patronesComportamiento/patronCommand/Main.java create mode 100644 patronesComportamiento/patronCommand/Orden.java create mode 100644 patronesComportamiento/patronCommand/OrdenApagar.java create mode 100644 patronesComportamiento/patronCommand/OrdenEncender.java create mode 100644 patronesComportamiento/patronInterpreter/Context.java create mode 100644 patronesComportamiento/patronInterpreter/Expression.java create mode 100644 patronesComportamiento/patronInterpreter/HundredExpression.java create mode 100644 patronesComportamiento/patronInterpreter/Main.java create mode 100644 patronesComportamiento/patronInterpreter/OneExpression.java create mode 100644 patronesComportamiento/patronInterpreter/TenExpression.java create mode 100644 patronesComportamiento/patronInterpreter/ThousandExpression.java create mode 100644 patronesComportamiento/patronIterator/IteradorVector.java create mode 100644 patronesComportamiento/patronIterator/Main.java create mode 100644 patronesComportamiento/patronIterator/Vector.java create mode 100644 patronesComportamiento/patronMediator/Colega.java create mode 100644 patronesComportamiento/patronMediator/ColegaConcreto1.java create mode 100644 patronesComportamiento/patronMediator/ColegaConcreto2.java create mode 100644 patronesComportamiento/patronMediator/Main.java create mode 100644 patronesComportamiento/patronMediator/Mediador.java create mode 100644 patronesComportamiento/patronMediator/MediadorConcreto.java create mode 100644 patronesComportamiento/patronMemento/Conserje.java create mode 100644 patronesComportamiento/patronMemento/Main.java create mode 100644 patronesComportamiento/patronMemento/Memento.java create mode 100644 patronesComportamiento/patronMemento/Originador.java create mode 100644 patronesComportamiento/patronObserver/Cliente.java create mode 100644 patronesComportamiento/patronObserver/Electrodomestico.java create mode 100644 patronesComportamiento/patronObserver/Main.java create mode 100644 patronesComportamiento/patronObserver/ObservableIF.java create mode 100644 patronesComportamiento/patronObserver/ObservadorIF.java create mode 100644 patronesComportamiento/patronState/Contexto.java create mode 100644 patronesComportamiento/patronState/Estado.java create mode 100644 patronesComportamiento/patronState/EstadoConcretoA.java create mode 100644 patronesComportamiento/patronState/EstadoConcretoB.java create mode 100644 patronesComportamiento/patronState/Main.java create mode 100644 patronesComportamiento/patronStrategy/Contexto.java create mode 100644 patronesComportamiento/patronStrategy/Estrategia.java create mode 100644 patronesComportamiento/patronStrategy/EstrategiaA.java create mode 100644 patronesComportamiento/patronStrategy/EstrategiaB.java create mode 100644 patronesComportamiento/patronStrategy/Main.java create mode 100644 patronesComportamiento/patronTemplateMethod/Automovil.java create mode 100644 patronesComportamiento/patronTemplateMethod/AutomovilAutomatico.java create mode 100644 patronesComportamiento/patronTemplateMethod/AutomovilManual.java create mode 100644 patronesComportamiento/patronTemplateMethod/Main.java create mode 100644 patronesComportamiento/patronVisitor/Main.java create mode 100644 patronesComportamiento/patronVisitor/Nodo.java create mode 100644 patronesComportamiento/patronVisitor/NodoA.java create mode 100644 patronesComportamiento/patronVisitor/NodoB.java create mode 100644 patronesComportamiento/patronVisitor/NodoC.java create mode 100644 patronesComportamiento/patronVisitor/Visitante.java create mode 100644 patronesComportamiento/patronVisitor/VisitanteBajar.java create mode 100644 patronesComportamiento/patronVisitor/VisitanteSubir.java create mode 100644 patronesCreacion/patronAbstractFactory/AbstractFactory.java create mode 100644 patronesCreacion/patronAbstractFactory/Boton.java create mode 100644 patronesCreacion/patronAbstractFactory/BotonLinux.java create mode 100644 patronesCreacion/patronAbstractFactory/BotonWindows.java create mode 100644 patronesCreacion/patronAbstractFactory/Cliente.java create mode 100644 patronesCreacion/patronAbstractFactory/FabricaLinux.java create mode 100644 patronesCreacion/patronAbstractFactory/FabricaWindows.java create mode 100644 patronesCreacion/patronAbstractFactory/Main.java create mode 100644 patronesCreacion/patronBuilder/Cliente.java create mode 100644 patronesCreacion/patronBuilder/Cocina.java create mode 100644 patronesCreacion/patronBuilder/ConstructorPizzaHawai.java create mode 100644 patronesCreacion/patronBuilder/ConstructorPizzaPicante.java create mode 100644 patronesCreacion/patronBuilder/ConstructorPizzas.java create mode 100644 patronesCreacion/patronBuilder/Main.java create mode 100644 patronesCreacion/patronBuilder/Pizza.java create mode 100644 patronesCreacion/patronFactoria/Electrodomestico.java create mode 100644 patronesCreacion/patronFactoria/FactoriaElectrodomesticos.java create mode 100644 patronesCreacion/patronFactoria/FactoriaIF.java create mode 100644 patronesCreacion/patronFactoria/Horno.java create mode 100644 patronesCreacion/patronFactoria/Lavadora.java create mode 100644 patronesCreacion/patronFactoria/Main.java create mode 100644 patronesCreacion/patronFactoria/Microondas.java create mode 100644 patronesCreacion/patronFactoria/Television.java create mode 100644 patronesCreacion/patronPrototype/Circulo.java create mode 100644 patronesCreacion/patronPrototype/Cuadrado.java create mode 100644 patronesCreacion/patronPrototype/Figura.java create mode 100644 patronesCreacion/patronPrototype/Main.java create mode 100644 patronesCreacion/patronPrototype/Prototype.java create mode 100644 patronesCreacion/patronSingleton/Main.java create mode 100644 patronesCreacion/patronSingleton/Singleton.java create mode 100644 patronesCreacion/patronSingleton/Singleton1.java create mode 100644 patronesEstructurales/patronAdapter/Guitarra.java create mode 100644 patronesEstructurales/patronAdapter/GuitarraAcustica.java create mode 100644 patronesEstructurales/patronAdapter/GuitarraElectrica.java create mode 100644 patronesEstructurales/patronAdapter/GuitarraElectricaAcustica.java create mode 100644 patronesEstructurales/patronAdapter/Main.java create mode 100644 patronesEstructurales/patronBridge/Abstraccion.java create mode 100644 patronesEstructurales/patronBridge/AbstraccionRefinada.java create mode 100644 patronesEstructurales/patronBridge/Implementador.java create mode 100644 patronesEstructurales/patronBridge/ImplementadorConcretoA.java create mode 100644 patronesEstructurales/patronBridge/ImplementadorConcretoB.java create mode 100644 patronesEstructurales/patronBridge/Main.java create mode 100644 patronesEstructurales/patronComposite/Componente.java create mode 100644 patronesEstructurales/patronComposite/Compuesto.java create mode 100644 patronesEstructurales/patronComposite/Hoja.java create mode 100644 patronesEstructurales/patronComposite/Main.java create mode 100644 patronesEstructurales/patronDecorator/Componente.java create mode 100644 patronesEstructurales/patronDecorator/ComponenteConcreto.java create mode 100644 patronesEstructurales/patronDecorator/Decorador.java create mode 100644 patronesEstructurales/patronDecorator/DecoradorConcretoA.java create mode 100644 patronesEstructurales/patronDecorator/DecoradorConcretoB.java create mode 100644 patronesEstructurales/patronDecorator/Main.java create mode 100644 patronesEstructurales/patronFacade/Fachada.java create mode 100644 patronesEstructurales/patronFacade/LibreriaLibros.java create mode 100644 patronesEstructurales/patronFacade/LibreriaMusica.java create mode 100644 patronesEstructurales/patronFacade/LibreriaVideos.java create mode 100644 patronesEstructurales/patronFacade/Main.java create mode 100644 patronesEstructurales/patronFlyWeight/FactoryFlyWeight.java create mode 100644 patronesEstructurales/patronFlyWeight/Main.java create mode 100644 patronesEstructurales/patronFlyWeight/OrdenadorConcreto.java create mode 100644 patronesEstructurales/patronFlyWeight/OrdenadorFWAsusScorpion15.java create mode 100644 patronesEstructurales/patronProxy/Imagen.java create mode 100644 patronesEstructurales/patronProxy/ImagenProxy.java create mode 100644 patronesEstructurales/patronProxy/ImagenReal.java create mode 100644 patronesEstructurales/patronProxy/Main.java diff --git a/patronesComportamiento/patronChainOfResponsibility/DirectivoPCompra.java b/patronesComportamiento/patronChainOfResponsibility/DirectivoPCompra.java new file mode 100644 index 0000000..24a106c --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/DirectivoPCompra.java @@ -0,0 +1,15 @@ +package patronChainOfResponsibility; + +public class DirectivoPCompra extends PoderDeCompra{ + private final int PERMISIBLE = 10 * base; + @Override + public void procesarPeticion(PeticionDeCompra peticion) { + if( peticion.getImporte() < PERMISIBLE) { + System.out.println("El directivo puede aprobar la cantidad de "+ peticion.getImporte() +" euros."); + }else if(sucesor!= null) { + sucesor.procesarPeticion(peticion); + } + + } + +} diff --git a/patronesComportamiento/patronChainOfResponsibility/DirectorPCompra.java b/patronesComportamiento/patronChainOfResponsibility/DirectorPCompra.java new file mode 100644 index 0000000..9006f54 --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/DirectorPCompra.java @@ -0,0 +1,15 @@ +package patronChainOfResponsibility; + +public class DirectorPCompra extends PoderDeCompra{ + private final int PERMISIBLE = 20 * base; + @Override + public void procesarPeticion(PeticionDeCompra peticion) { + if( peticion.getImporte() < PERMISIBLE) { + System.out.println("El director puede aprobar la cantidad de "+ peticion.getImporte()+" euros."); + }else if(sucesor!= null) { + sucesor.procesarPeticion(peticion); + } + + } + +} diff --git a/patronesComportamiento/patronChainOfResponsibility/Main.java b/patronesComportamiento/patronChainOfResponsibility/Main.java new file mode 100644 index 0000000..85b1c68 --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/Main.java @@ -0,0 +1,29 @@ +package patronChainOfResponsibility; + +public class Main { + + public static void main(String[] args) { + DirectivoPCompra directivo = new DirectivoPCompra(); + DirectorPCompra director = new DirectorPCompra(); + VicePresidentePCompra vicepresidente = new VicePresidentePCompra(); + PresidentePCompra presidente = new PresidentePCompra(); + + directivo.setSucesor(director); + director.setSucesor(vicepresidente); + vicepresidente.setSucesor(presidente); + + //Hacemos 4 peticiones de compra con diferentes gastos + PeticionDeCompra p1 = new PeticionDeCompra(1,700,"Comida"); + PeticionDeCompra p2 = new PeticionDeCompra(2,8000,"Viaje"); + PeticionDeCompra p3 = new PeticionDeCompra(3,16000,"Moto"); + PeticionDeCompra p4 = new PeticionDeCompra(4,22000,"Coche"); + PeticionDeCompra p5 = new PeticionDeCompra(4,66000,"Yate"); + + //Llamamos a procesarPeticion para averiguar quien puede aprobarla. + directivo.procesarPeticion(p1); + directivo.procesarPeticion(p2); + directivo.procesarPeticion(p3); + directivo.procesarPeticion(p4); + directivo.procesarPeticion(p5); + } +} diff --git a/patronesComportamiento/patronChainOfResponsibility/PeticionDeCompra.java b/patronesComportamiento/patronChainOfResponsibility/PeticionDeCompra.java new file mode 100644 index 0000000..4a04e53 --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/PeticionDeCompra.java @@ -0,0 +1,37 @@ +package patronChainOfResponsibility; + +public class PeticionDeCompra { + private int numero; + private int importe; + private String proposito; + + public PeticionDeCompra(int numero, int importe,String proposito) { + this.numero=numero; + this.importe = importe; + this.proposito=proposito; + } + + public int getNumero() { + return numero; + } + + public int getImporte() { + return importe; + } + + public String getProposito() { + return proposito; + } + + public void setNumero(int numero) { + this.numero = numero; + } + + public void setImporte(int importe) { + this.importe = importe; + } + + public void setProposito(String proposito) { + this.proposito = proposito; + } +} diff --git a/patronesComportamiento/patronChainOfResponsibility/PoderDeCompra.java b/patronesComportamiento/patronChainOfResponsibility/PoderDeCompra.java new file mode 100644 index 0000000..e3cd232 --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/PoderDeCompra.java @@ -0,0 +1,13 @@ +package patronChainOfResponsibility; + +//Esta clase es el MANEJADOR +public abstract class PoderDeCompra { + protected final int base = 500; + protected PoderDeCompra sucesor; + + public void setSucesor(PoderDeCompra sucesor) { + this.sucesor = sucesor; + } + + public abstract void procesarPeticion(PeticionDeCompra peticion); +} diff --git a/patronesComportamiento/patronChainOfResponsibility/PresidentePCompra.java b/patronesComportamiento/patronChainOfResponsibility/PresidentePCompra.java new file mode 100644 index 0000000..e263dcb --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/PresidentePCompra.java @@ -0,0 +1,19 @@ +package patronChainOfResponsibility; + +public class PresidentePCompra extends PoderDeCompra{ + private final int PERMISIBLE = 60 * base; + @Override + public void procesarPeticion(PeticionDeCompra peticion) { + if( peticion.getImporte() < PERMISIBLE) { + System.out.println("El presidente puede aprobar la cantidad de "+ peticion.getImporte()+" euros."); + }else{ + if(sucesor!= null) { + sucesor.procesarPeticion(peticion); + }else { + System.out.println("La cantidad de " + peticion.getImporte() + " euros debe ser aprobada por un equipo de dirección"); + } + } + + } + +} diff --git a/patronesComportamiento/patronChainOfResponsibility/VicePresidentePCompra.java b/patronesComportamiento/patronChainOfResponsibility/VicePresidentePCompra.java new file mode 100644 index 0000000..a60a3e4 --- /dev/null +++ b/patronesComportamiento/patronChainOfResponsibility/VicePresidentePCompra.java @@ -0,0 +1,16 @@ +package patronChainOfResponsibility; + +public class VicePresidentePCompra extends PoderDeCompra{ + + private final int PERMISIBLE = 40 * base; + @Override + public void procesarPeticion(PeticionDeCompra peticion) { + if( peticion.getImporte() < PERMISIBLE) { + System.out.println("El vicepresidente puede aprobar la cantidad de "+ peticion.getImporte()+" euros."); + }else if(sucesor!= null) { + sucesor.procesarPeticion(peticion); + } + + } + +} \ No newline at end of file diff --git a/patronesComportamiento/patronCommand/Interruptor.java b/patronesComportamiento/patronCommand/Interruptor.java new file mode 100644 index 0000000..6598d4f --- /dev/null +++ b/patronesComportamiento/patronCommand/Interruptor.java @@ -0,0 +1,21 @@ +package patronCommand; + +//es el INVOCADOR +//tiene 2 instancias de orden concretas almacenadas. +public class Interruptor { + private Orden ordenEncender; + private Orden ordenApagar; + + public Interruptor(Orden ordenEncender, Orden ordenApagar) { + this.ordenEncender = ordenEncender; + this.ordenApagar = ordenApagar; + } + + public void encender() { + ordenEncender.ejecutar(); + } + + public void apagar() { + ordenApagar.ejecutar(); + } +} diff --git a/patronesComportamiento/patronCommand/Luz.java b/patronesComportamiento/patronCommand/Luz.java new file mode 100644 index 0000000..0b2b71a --- /dev/null +++ b/patronesComportamiento/patronCommand/Luz.java @@ -0,0 +1,14 @@ +package patronCommand; + +//es la clase RECEPTOR, la luz representa por ejemplo una bombilla +//tiene los metodos que ejecutan las ordenes +public class Luz { + + public void encenderLuz() { + System.out.println("La luz esta encendida"); + } + + public void apagarLuz() { + System.out.println("La luz esta apagada"); + } +} diff --git a/patronesComportamiento/patronCommand/Main.java b/patronesComportamiento/patronCommand/Main.java new file mode 100644 index 0000000..01e5030 --- /dev/null +++ b/patronesComportamiento/patronCommand/Main.java @@ -0,0 +1,23 @@ +package patronCommand; + +//Esta clase seria el Cliente, que pulsa el interruptor. +public class Main { + + public static void main(String[] args) { + + //instancia del RECEPTOR. + //Llamada bombilla por facilitar entender el programa. + Luz bombilla = new Luz(); + + //intancias de las ordenes concretas + Orden interruptorUp = new OrdenEncender(bombilla); + Orden interruptorDown = new OrdenApagar(bombilla); + + //instancia del INVOCADOR pasandole las ordenes concretas. + Interruptor i = new Interruptor(interruptorUp,interruptorDown); + + i.encender(); + i.apagar(); + } + +} diff --git a/patronesComportamiento/patronCommand/Orden.java b/patronesComportamiento/patronCommand/Orden.java new file mode 100644 index 0000000..1205094 --- /dev/null +++ b/patronesComportamiento/patronCommand/Orden.java @@ -0,0 +1,5 @@ +package patronCommand; + +public interface Orden { + void ejecutar(); +} diff --git a/patronesComportamiento/patronCommand/OrdenApagar.java b/patronesComportamiento/patronCommand/OrdenApagar.java new file mode 100644 index 0000000..54a0214 --- /dev/null +++ b/patronesComportamiento/patronCommand/OrdenApagar.java @@ -0,0 +1,17 @@ +package patronCommand; + +//esta clase es una Orden Concreta. +//almacena una instancia del receptor sobre el que invoca la accion. +public class OrdenApagar implements Orden{ + private Luz luz; + + public OrdenApagar(Luz luz) { + this.luz = luz; + } + + @Override + public void ejecutar() { + luz.apagarLuz(); + } + +} diff --git a/patronesComportamiento/patronCommand/OrdenEncender.java b/patronesComportamiento/patronCommand/OrdenEncender.java new file mode 100644 index 0000000..a65c287 --- /dev/null +++ b/patronesComportamiento/patronCommand/OrdenEncender.java @@ -0,0 +1,17 @@ +package patronCommand; + +//esta clase es una Orden Concreta. +//almacena una instancia del receptor sobre el que invoca la accion. +public class OrdenEncender implements Orden{ + private Luz luz; + + public OrdenEncender(Luz luz) { + this.luz = luz; + } + + @Override + public void ejecutar() { + luz.encenderLuz(); + } + +} diff --git a/patronesComportamiento/patronInterpreter/Context.java b/patronesComportamiento/patronInterpreter/Context.java new file mode 100644 index 0000000..6e18ef2 --- /dev/null +++ b/patronesComportamiento/patronInterpreter/Context.java @@ -0,0 +1,32 @@ +package patronInterpreter; + +//Nuestro contexto es una sentencia del lenguaje a analizar. +public class Context { + private String input; + private int output; + + public Context(String input) + { + this.input = input; + } + + public String getInput() + { + return input; + } + + public void setInput(String input) + { + this.input = input; + } + + public int getOutput() + { + return output; + } + + public void setOutput(int output) + { + this.output = output; + } +} diff --git a/patronesComportamiento/patronInterpreter/Expression.java b/patronesComportamiento/patronInterpreter/Expression.java new file mode 100644 index 0000000..e2c493e --- /dev/null +++ b/patronesComportamiento/patronInterpreter/Expression.java @@ -0,0 +1,38 @@ +package patronInterpreter; + +//Esta clase es la encargada de interpretar el contexto. +public abstract class Expression { + public void interpret(Context context) + { + if (context.getInput().length() == 0) + return; + + if (context.getInput().startsWith(nine())) + { + context.setOutput(context.getOutput() + (9 * multiplier())); + context.setInput(context.getInput().substring(2)); + } + else if (context.getInput().startsWith(four())) + { + context.setOutput(context.getOutput() + (4 * multiplier())); + context.setInput(context.getInput().substring(2)); + } + else if (context.getInput().startsWith(five())) + { + context.setOutput(context.getOutput() + (5 * multiplier())); + context.setInput( context.getInput().substring(1)); + } + + while (context.getInput().startsWith(one())) + { + context.setOutput(context.getOutput() + (1 * multiplier())); + context.setInput(context.getInput().substring(1)); + } + } + + public abstract String one(); + public abstract String four(); + public abstract String five(); + public abstract String nine(); + public abstract int multiplier(); +} diff --git a/patronesComportamiento/patronInterpreter/HundredExpression.java b/patronesComportamiento/patronInterpreter/HundredExpression.java new file mode 100644 index 0000000..af02171 --- /dev/null +++ b/patronesComportamiento/patronInterpreter/HundredExpression.java @@ -0,0 +1,9 @@ +package patronInterpreter; + +public class HundredExpression extends Expression{ + public String one() { return "C"; } + public String four(){ return "CD"; } + public String five(){ return "D"; } + public String nine(){ return "CM"; } + public int multiplier() { return 100; } +} diff --git a/patronesComportamiento/patronInterpreter/Main.java b/patronesComportamiento/patronInterpreter/Main.java new file mode 100644 index 0000000..325dea5 --- /dev/null +++ b/patronesComportamiento/patronInterpreter/Main.java @@ -0,0 +1,30 @@ +package patronInterpreter; + +import java.util.ArrayList; + +import java.util.Iterator; + +//esta clase seria el cliente +public class Main { + + public static void main(String[] args) { + String roman = "MCMXXVIII"; + Context context = new Context(roman); + + //Construye el árbol sintáctico + ArrayList tree = new ArrayList(); + tree.add(new ThousandExpression()); + tree.add(new HundredExpression()); + tree.add(new TenExpression()); + tree.add(new OneExpression()); + + // Interpretar: recorre todas las Expresiones del árbol. + for (Iterator it = tree.iterator(); it.hasNext();){ + Expression exp = (Expression)it.next(); + exp.interpret(context); + } + + System.out.println(roman + " = " + Integer.toString(context.getOutput())); + } +} + diff --git a/patronesComportamiento/patronInterpreter/OneExpression.java b/patronesComportamiento/patronInterpreter/OneExpression.java new file mode 100644 index 0000000..c968c22 --- /dev/null +++ b/patronesComportamiento/patronInterpreter/OneExpression.java @@ -0,0 +1,9 @@ +package patronInterpreter; + +public class OneExpression extends Expression{ + public String one() { return "I"; } + public String four(){ return "IV"; } + public String five(){ return "V"; } + public String nine(){ return "IX"; } + public int multiplier() { return 1; } +} diff --git a/patronesComportamiento/patronInterpreter/TenExpression.java b/patronesComportamiento/patronInterpreter/TenExpression.java new file mode 100644 index 0000000..d8e8d0f --- /dev/null +++ b/patronesComportamiento/patronInterpreter/TenExpression.java @@ -0,0 +1,9 @@ +package patronInterpreter; + +public class TenExpression extends Expression{ + public String one() { return "X"; } + public String four(){ return "XL"; } + public String five(){ return "L"; } + public String nine(){ return "XC"; } + public int multiplier() { return 10; } +} diff --git a/patronesComportamiento/patronInterpreter/ThousandExpression.java b/patronesComportamiento/patronInterpreter/ThousandExpression.java new file mode 100644 index 0000000..fef6983 --- /dev/null +++ b/patronesComportamiento/patronInterpreter/ThousandExpression.java @@ -0,0 +1,9 @@ +package patronInterpreter; + +public class ThousandExpression extends Expression{ + public String one() { return "M"; } + public String four(){ return " "; } + public String five(){ return " "; } + public String nine(){ return " "; } + public int multiplier() { return 1000; } +} diff --git a/patronesComportamiento/patronIterator/IteradorVector.java b/patronesComportamiento/patronIterator/IteradorVector.java new file mode 100644 index 0000000..06b5e89 --- /dev/null +++ b/patronesComportamiento/patronIterator/IteradorVector.java @@ -0,0 +1,28 @@ +package patronIterator; + +public class IteradorVector { + private int[] datosVector; + private int posicion; + + public IteradorVector(Vector vector) { + datosVector = vector.getDatos(); + this.posicion = 0; + } + + public boolean hasNext() { + if(posicion < datosVector.length){ + return true; + } + return false; + } + + public Object next(){ + int valor = datosVector[posicion]; + posicion++; + return valor; + } + + public void reset() { + posicion=0; + } +} diff --git a/patronesComportamiento/patronIterator/Main.java b/patronesComportamiento/patronIterator/Main.java new file mode 100644 index 0000000..f46b01e --- /dev/null +++ b/patronesComportamiento/patronIterator/Main.java @@ -0,0 +1,19 @@ +package patronIterator; + +public class Main { + + public static void main(String[] args) { + + //creamos un vector de 5 espacios + Vector vector = new Vector(5); + //creamos un iterador para dicho vector. + IteradorVector iterador = vector.iterador(); + + //mientras queden elementos en el vector por recorrer + while(iterador.hasNext()) { + System.out.println(iterador.next()); //los muestras + } + + iterador.reset(); //nos devuelve a la primera posicion del vector. + } +} diff --git a/patronesComportamiento/patronIterator/Vector.java b/patronesComportamiento/patronIterator/Vector.java new file mode 100644 index 0000000..0d3568c --- /dev/null +++ b/patronesComportamiento/patronIterator/Vector.java @@ -0,0 +1,32 @@ +package patronIterator; + +public class Vector { + public int[] datos; + + public Vector(int tamanyo) { + this.datos = new int[tamanyo]; + for(int i = 0; i mementos = new ArrayList(); + + public void addMemento(Memento m) { + mementos.add(m); + } + + //Recuperar el memento de una posición. + public Memento getMemento(int i) { + return mementos.get(i); + } +} diff --git a/patronesComportamiento/patronMemento/Main.java b/patronesComportamiento/patronMemento/Main.java new file mode 100644 index 0000000..6e207c0 --- /dev/null +++ b/patronesComportamiento/patronMemento/Main.java @@ -0,0 +1,23 @@ +package patronMemento; + +public class Main { + + public static void main(String[] args) { + + //instancio la clase que almacenara los mementos. + Conserje conserje = new Conserje(); + //clase que ira generando los estados. + Originador originador = new Originador(); + + originador.setEstado("Estado 1"); //Estamos en Estado 1 + originador.setEstado("Estado 2"); //Estamos en Estado 2 + conserje.addMemento(originador.crearMemento()); //Guardamos Estado 2 + originador.setEstado("Estado 3"); //Estamos en Estado 3 + conserje.addMemento(originador.crearMemento()); //Estamos en Estado 3 + originador.setEstado("Estado 4"); //Estamos en Estado 4 + originador.setMemento(conserje.getMemento(1));//Recuperamos Estado 3 + + System.out.println("El estado actual es: "+ originador.getEstado()); + } + +} diff --git a/patronesComportamiento/patronMemento/Memento.java b/patronesComportamiento/patronMemento/Memento.java new file mode 100644 index 0000000..741f804 --- /dev/null +++ b/patronesComportamiento/patronMemento/Memento.java @@ -0,0 +1,14 @@ +package patronMemento; + +public class Memento { + private String estado; + + public Memento(String estadoParaGuardar) { + estado = estadoParaGuardar; + } + + //metodo para recuperar el estado guardado + public String getEstado() { + return estado; + } +} diff --git a/patronesComportamiento/patronMemento/Originador.java b/patronesComportamiento/patronMemento/Originador.java new file mode 100644 index 0000000..78c6174 --- /dev/null +++ b/patronesComportamiento/patronMemento/Originador.java @@ -0,0 +1,21 @@ +package patronMemento; + +public class Originador { + private String estado; + + public void setEstado(String estado) { + this.estado = estado; + } + + public Memento crearMemento() { + return new Memento(estado); + } + + public void setMemento(Memento m) { + this.estado = m.getEstado(); + } + + public String getEstado() { + return estado; + } +} diff --git a/patronesComportamiento/patronObserver/Cliente.java b/patronesComportamiento/patronObserver/Cliente.java new file mode 100644 index 0000000..cc81e63 --- /dev/null +++ b/patronesComportamiento/patronObserver/Cliente.java @@ -0,0 +1,17 @@ +package patronObserver; + +//esta clase es el OBSERVADOR +public class Cliente implements ObservadorIF{ + + String nombre; + + public Cliente(String nombre){ + this.nombre=nombre; + } + + @Override + public void update() { + System.out.println(nombre + " recibe notificacion reparación"); + } + +} diff --git a/patronesComportamiento/patronObserver/Electrodomestico.java b/patronesComportamiento/patronObserver/Electrodomestico.java new file mode 100644 index 0000000..cde6ee3 --- /dev/null +++ b/patronesComportamiento/patronObserver/Electrodomestico.java @@ -0,0 +1,34 @@ +package patronObserver; +import java.util.ArrayList; + +//Esta clase es el OBSERVABLE +public class Electrodomestico implements ObservableIF { + + ArrayList observadores; + + public Electrodomestico() { + observadores = new ArrayList<>(); + } + + public void electrodomesticoArreglado() { + notificar(); + } + + @Override + public void addObserver(ObservadorIF o) { + observadores.add(o); + } + + @Override + public void removeObserver(ObservadorIF o) { + observadores.remove(o); + } + + @Override + public void notificar() { + for(ObservadorIF o: observadores) { + o.update(); + } + } + +} diff --git a/patronesComportamiento/patronObserver/Main.java b/patronesComportamiento/patronObserver/Main.java new file mode 100644 index 0000000..4e484f2 --- /dev/null +++ b/patronesComportamiento/patronObserver/Main.java @@ -0,0 +1,22 @@ +package patronObserver; + +public class Main { + + public static void main(String[] args) { + //creo 3 objetos Observadores (Clientes), que recibiran un aviso cuando este reparado su producto. + Cliente c1 = new Cliente("Cliente 1"); + Cliente c2 = new Cliente("Cliente 2"); + Cliente c3 = new Cliente("Cliente 3"); + + //Por comprobar su correcto funcionamiento se va a crear un unico objeto Observable, que notificara a todos los Observadores. + Electrodomestico television = new Electrodomestico(); + //añado los observadores de television. + television.addObserver(c1); + television.addObserver(c2); + television.addObserver(c3); + + //llamamos al metodo que disparara el aviso + television.electrodomesticoArreglado(); + } + +} diff --git a/patronesComportamiento/patronObserver/ObservableIF.java b/patronesComportamiento/patronObserver/ObservableIF.java new file mode 100644 index 0000000..f64d712 --- /dev/null +++ b/patronesComportamiento/patronObserver/ObservableIF.java @@ -0,0 +1,9 @@ +package patronObserver; + +public interface ObservableIF { + + public void addObserver(ObservadorIF o); + public void removeObserver(ObservadorIF o); + public void notificar(); + +} diff --git a/patronesComportamiento/patronObserver/ObservadorIF.java b/patronesComportamiento/patronObserver/ObservadorIF.java new file mode 100644 index 0000000..95369d0 --- /dev/null +++ b/patronesComportamiento/patronObserver/ObservadorIF.java @@ -0,0 +1,7 @@ +package patronObserver; + +public interface ObservadorIF { + + public void update(); + +} diff --git a/patronesComportamiento/patronState/Contexto.java b/patronesComportamiento/patronState/Contexto.java new file mode 100644 index 0000000..9a61a85 --- /dev/null +++ b/patronesComportamiento/patronState/Contexto.java @@ -0,0 +1,17 @@ +package patronState; + +public class Contexto { + private Estado estado; + + public void setEstado(Estado estado) { + this.estado = estado; + } + + public Estado getEstado() { + return this.estado; + } + + public void peticion() { + estado.ejecutarOperacion(); + } +} diff --git a/patronesComportamiento/patronState/Estado.java b/patronesComportamiento/patronState/Estado.java new file mode 100644 index 0000000..4eb2b7c --- /dev/null +++ b/patronesComportamiento/patronState/Estado.java @@ -0,0 +1,5 @@ +package patronState; + +public interface Estado { + void ejecutarOperacion(); +} diff --git a/patronesComportamiento/patronState/EstadoConcretoA.java b/patronesComportamiento/patronState/EstadoConcretoA.java new file mode 100644 index 0000000..94a8fb8 --- /dev/null +++ b/patronesComportamiento/patronState/EstadoConcretoA.java @@ -0,0 +1,9 @@ +package patronState; + +public class EstadoConcretoA implements Estado{ + + @Override + public void ejecutarOperacion() { + System.out.println("En estado concreto A"); + } +} diff --git a/patronesComportamiento/patronState/EstadoConcretoB.java b/patronesComportamiento/patronState/EstadoConcretoB.java new file mode 100644 index 0000000..090bbd1 --- /dev/null +++ b/patronesComportamiento/patronState/EstadoConcretoB.java @@ -0,0 +1,10 @@ +package patronState; + +public class EstadoConcretoB implements Estado{ + + @Override + public void ejecutarOperacion() { + System.out.println("En estado concreto B"); + } + +} diff --git a/patronesComportamiento/patronState/Main.java b/patronesComportamiento/patronState/Main.java new file mode 100644 index 0000000..7bcb6a8 --- /dev/null +++ b/patronesComportamiento/patronState/Main.java @@ -0,0 +1,22 @@ +package patronState; + +public class Main { + + public static void main(String[] args) { + Estado estado = new EstadoConcretoA(); + Estado estado2 = new EstadoConcretoB(); + Contexto contexto = new Contexto(); + + //Asignamos a contexto el estado concreto A + contexto.setEstado(estado); + contexto.peticion(); + + //asignamos a contexto el estado concreto B + contexto.setEstado(estado2); + contexto.peticion(); + + /*Como vemos segun el estado en el que se encuentre contexto + el metodo peticion(); realiza una accion diferente. */ + } + +} diff --git a/patronesComportamiento/patronStrategy/Contexto.java b/patronesComportamiento/patronStrategy/Contexto.java new file mode 100644 index 0000000..e62bc2a --- /dev/null +++ b/patronesComportamiento/patronStrategy/Contexto.java @@ -0,0 +1,17 @@ +package patronStrategy; + +public class Contexto { + Estrategia estrategia; + + public Contexto(Estrategia s) { + this.estrategia = s; + } + + public void setEstrategia(Estrategia s) { + this.estrategia = s; + } + + public void ejecutarMetodoEstrategico() { + estrategia.comportamiento(); + } +} diff --git a/patronesComportamiento/patronStrategy/Estrategia.java b/patronesComportamiento/patronStrategy/Estrategia.java new file mode 100644 index 0000000..78b6544 --- /dev/null +++ b/patronesComportamiento/patronStrategy/Estrategia.java @@ -0,0 +1,5 @@ +package patronStrategy; + +public abstract class Estrategia { + public abstract void comportamiento(); +} diff --git a/patronesComportamiento/patronStrategy/EstrategiaA.java b/patronesComportamiento/patronStrategy/EstrategiaA.java new file mode 100644 index 0000000..96001a0 --- /dev/null +++ b/patronesComportamiento/patronStrategy/EstrategiaA.java @@ -0,0 +1,10 @@ +package patronStrategy; + +public class EstrategiaA extends Estrategia { + + @Override + public void comportamiento() { + System.out.println("Se realizara la estrategia A"); + } + +} diff --git a/patronesComportamiento/patronStrategy/EstrategiaB.java b/patronesComportamiento/patronStrategy/EstrategiaB.java new file mode 100644 index 0000000..6051a4a --- /dev/null +++ b/patronesComportamiento/patronStrategy/EstrategiaB.java @@ -0,0 +1,10 @@ +package patronStrategy; + +public class EstrategiaB extends Estrategia{ + + @Override + public void comportamiento() { + System.out.println("Se realizara la estrategia A"); + } + +} diff --git a/patronesComportamiento/patronStrategy/Main.java b/patronesComportamiento/patronStrategy/Main.java new file mode 100644 index 0000000..b6c065f --- /dev/null +++ b/patronesComportamiento/patronStrategy/Main.java @@ -0,0 +1,21 @@ +package patronStrategy; + +public class Main { + + public static void main(String[] args) { + + //instanciamos la estrategia A + Estrategia estrategiaInicial = new EstrategiaA(); + //se la asignamos al contexto + Contexto contexto = new Contexto(estrategiaInicial); + + contexto.ejecutarMetodoEstrategico(); + + //instancias la estrategia B + Estrategia otraEstrategia = new EstrategiaB(); + //se la asignamos al contexto + contexto.setEstrategia(otraEstrategia); + + contexto.ejecutarMetodoEstrategico(); + } +} diff --git a/patronesComportamiento/patronTemplateMethod/Automovil.java b/patronesComportamiento/patronTemplateMethod/Automovil.java new file mode 100644 index 0000000..b1699fa --- /dev/null +++ b/patronesComportamiento/patronTemplateMethod/Automovil.java @@ -0,0 +1,20 @@ +package patronTemplateMethod; + +//clase Abstracta +public abstract class Automovil { + public void desplazar() { + acelerar(); + cambiarMarcha(); + frenar(); + } + private void acelerar() { + System.out.println("Acelerando"); + } + + private void frenar() { + System.out.println("Frenando"); + } + + protected abstract void cambiarMarcha(); + +} diff --git a/patronesComportamiento/patronTemplateMethod/AutomovilAutomatico.java b/patronesComportamiento/patronTemplateMethod/AutomovilAutomatico.java new file mode 100644 index 0000000..d300ec3 --- /dev/null +++ b/patronesComportamiento/patronTemplateMethod/AutomovilAutomatico.java @@ -0,0 +1,10 @@ +package patronTemplateMethod; + +public class AutomovilAutomatico extends Automovil{ + + @Override + protected void cambiarMarcha() { + System.out.println("Cambio de marcha en Automatico"); + } + +} diff --git a/patronesComportamiento/patronTemplateMethod/AutomovilManual.java b/patronesComportamiento/patronTemplateMethod/AutomovilManual.java new file mode 100644 index 0000000..6419218 --- /dev/null +++ b/patronesComportamiento/patronTemplateMethod/AutomovilManual.java @@ -0,0 +1,10 @@ +package patronTemplateMethod; + +public class AutomovilManual extends Automovil{ + + @Override + protected void cambiarMarcha() { + System.out.println("Cambio de marcha en Manual"); + } + +} diff --git a/patronesComportamiento/patronTemplateMethod/Main.java b/patronesComportamiento/patronTemplateMethod/Main.java new file mode 100644 index 0000000..1519170 --- /dev/null +++ b/patronesComportamiento/patronTemplateMethod/Main.java @@ -0,0 +1,17 @@ +package patronTemplateMethod; + +public class Main { + + public static void main(String[] args) { + Automovil manual = new AutomovilManual(); + Automovil automatico = new AutomovilAutomatico(); + + manual.desplazar(); + + System.out.println(""); + + automatico.desplazar(); + + } + +} diff --git a/patronesComportamiento/patronVisitor/Main.java b/patronesComportamiento/patronVisitor/Main.java new file mode 100644 index 0000000..6a57844 --- /dev/null +++ b/patronesComportamiento/patronVisitor/Main.java @@ -0,0 +1,23 @@ +package patronVisitor; + +public class Main { + + //Creamos una lista de nodos de tres elementos, una para cada nodo. + public static Nodo[] lista = { new NodoA(), new NodoB(), new NodoC() }; + + public static void main(String[] args) { + //Creamos los visitantes concretos (las operaciones que tienen los nodos) + VisitanteSubir subir = new VisitanteSubir(); + VisitanteBajar bajar = new VisitanteBajar(); + + /*Recorremos la lista para que acepten el visitante. Esto lo hacemos sin saber + que tipo de nodo esta recibiendo, es el visitante concreto el que se encarga de averiguarlo.*/ + for(int i=0; i hijos = new ArrayList(); + + public Compuesto(String nombre) { + super(nombre); + } + + public void add(Componente c) { + hijos.add(c); + } + + public void Eliminar(Componente c) { + hijos.remove(c); + } + + public Componente ObtenerHijo(int profundidad) { + return hijos.get(profundidad); + } + + public void Operacion() { + for(int i = 0; i + * llama a super.operacion() que es Decorador -> + * este a su vez llama al componente.operacion() + * desde donde empieza la siguiente secuencia: + * 1. Al llamar a operacion() de componente muestra mensaje de ComponenteConcreto.operacion(). + * 2. Al llamar a operacion() de DecoradorConcretoA y le añade el nuevo estado y muestra mensaje. + * 3. Al llamar a operacion() de DecoradorConcretoB y muestra el mensaje de comportamiento B añadido + * 4. continuando en operacion() de DecoradorConcretoB muestra el mensaje DecoradorConcretoB.operacion() */ + d2.operacion(); + } + +} diff --git a/patronesEstructurales/patronFacade/Fachada.java b/patronesEstructurales/patronFacade/Fachada.java new file mode 100644 index 0000000..e1a25f1 --- /dev/null +++ b/patronesEstructurales/patronFacade/Fachada.java @@ -0,0 +1,19 @@ +package patronFacade; + +public class Fachada { + private LibreriaLibros libros = new LibreriaLibros(); + private LibreriaVideos videos = new LibreriaVideos(); + private LibreriaMusica musica = new LibreriaMusica(); + + public void buscarLibros() { + libros.buscarLibros(); + } + + public void buscarVideos() { + videos.buscarVideos(); + } + + public void buscarMusica() { + musica.buscarMusica(); + } +} diff --git a/patronesEstructurales/patronFacade/LibreriaLibros.java b/patronesEstructurales/patronFacade/LibreriaLibros.java new file mode 100644 index 0000000..63ca537 --- /dev/null +++ b/patronesEstructurales/patronFacade/LibreriaLibros.java @@ -0,0 +1,9 @@ +package patronFacade; + +public class LibreriaLibros { + + public void buscarLibros() { + System.out.println("Buscando Libros"); + } + +} diff --git a/patronesEstructurales/patronFacade/LibreriaMusica.java b/patronesEstructurales/patronFacade/LibreriaMusica.java new file mode 100644 index 0000000..787a5c1 --- /dev/null +++ b/patronesEstructurales/patronFacade/LibreriaMusica.java @@ -0,0 +1,9 @@ +package patronFacade; + +public class LibreriaMusica { + + public void buscarMusica() { + System.out.println("Buscando Musica"); + } + +} diff --git a/patronesEstructurales/patronFacade/LibreriaVideos.java b/patronesEstructurales/patronFacade/LibreriaVideos.java new file mode 100644 index 0000000..cbbbd7f --- /dev/null +++ b/patronesEstructurales/patronFacade/LibreriaVideos.java @@ -0,0 +1,9 @@ +package patronFacade; + +public class LibreriaVideos { + + public void buscarVideos() { + System.out.println("Buscando Videos"); + } + +} diff --git a/patronesEstructurales/patronFacade/Main.java b/patronesEstructurales/patronFacade/Main.java new file mode 100644 index 0000000..52bb34c --- /dev/null +++ b/patronesEstructurales/patronFacade/Main.java @@ -0,0 +1,13 @@ +package patronFacade; + +public class Main { + + public static void main(String[] args) { + Fachada fachada = new Fachada(); + + fachada.buscarLibros(); + fachada.buscarVideos(); + fachada.buscarMusica(); + } + +} diff --git a/patronesEstructurales/patronFlyWeight/FactoryFlyWeight.java b/patronesEstructurales/patronFlyWeight/FactoryFlyWeight.java new file mode 100644 index 0000000..2419c81 --- /dev/null +++ b/patronesEstructurales/patronFlyWeight/FactoryFlyWeight.java @@ -0,0 +1,23 @@ +package patronFlyWeight; + +import java.util.ArrayList; + +public class FactoryFlyWeight { + + ArrayList ordenadores = new ArrayList<>(); + + + public void crearOrdenador(int ram, int discoDuro, String color){ + OrdenadorConcreto ordenador = new OrdenadorConcreto(ram,discoDuro,color); + ordenadores.add(ordenador); + } + + public void getInformacionOrdenadores() { + for(OrdenadorConcreto o: ordenadores){ + System.out.println("La marca es: "+ o.getMarca() + ", el modelo es: "+ o.getModelo()+", el tamanio es: "+ o.getTamanio()); + + System.out.println("tiene de RAM: "+ o.getRam() + ", de disco duro tiene: "+ o.getDiscoDuro()+" GB y el modelo es: "+ o.getColor() +"\n"); + } + + } +} diff --git a/patronesEstructurales/patronFlyWeight/Main.java b/patronesEstructurales/patronFlyWeight/Main.java new file mode 100644 index 0000000..cd64c24 --- /dev/null +++ b/patronesEstructurales/patronFlyWeight/Main.java @@ -0,0 +1,15 @@ +package patronFlyWeight; + +public class Main { + + public static void main(String[] args) { + //Creamos factoria ASUS + FactoryFlyWeight fFW = new FactoryFlyWeight(); + + fFW.crearOrdenador(16,250,"rojo"); + fFW.crearOrdenador(8,120,"azul"); + fFW.crearOrdenador(32,960,"negro"); + + fFW.getInformacionOrdenadores(); + } +} diff --git a/patronesEstructurales/patronFlyWeight/OrdenadorConcreto.java b/patronesEstructurales/patronFlyWeight/OrdenadorConcreto.java new file mode 100644 index 0000000..45815ee --- /dev/null +++ b/patronesEstructurales/patronFlyWeight/OrdenadorConcreto.java @@ -0,0 +1,26 @@ +package patronFlyWeight; + +public class OrdenadorConcreto extends OrdenadorFWAsusScorpion15{ + private int ram; + private int discoDuro; + private String color; + + public OrdenadorConcreto(int ram, int discoDuro, String color) { + this.ram=ram; + this.discoDuro=discoDuro; + this.color=color; + } + + public String getColor() { + return color; + } + + public int getRam() { + return ram; + } + + public int getDiscoDuro() { + return discoDuro; + } + +} diff --git a/patronesEstructurales/patronFlyWeight/OrdenadorFWAsusScorpion15.java b/patronesEstructurales/patronFlyWeight/OrdenadorFWAsusScorpion15.java new file mode 100644 index 0000000..bd4f2ed --- /dev/null +++ b/patronesEstructurales/patronFlyWeight/OrdenadorFWAsusScorpion15.java @@ -0,0 +1,20 @@ +package patronFlyWeight; + +public abstract class OrdenadorFWAsusScorpion15 { + private static final String marca = "Asus"; + private static final String modelo = "Scorpion"; + private static final int tamanio = 15; + + + public String getMarca() { + return marca; + } + + public String getModelo() { + return modelo; + } + + public int getTamanio() { + return tamanio; + } +} diff --git a/patronesEstructurales/patronProxy/Imagen.java b/patronesEstructurales/patronProxy/Imagen.java new file mode 100644 index 0000000..81a8a67 --- /dev/null +++ b/patronesEstructurales/patronProxy/Imagen.java @@ -0,0 +1,5 @@ +package patronProxy; + +public interface Imagen { + public abstract void visualizarImagen(); +} diff --git a/patronesEstructurales/patronProxy/ImagenProxy.java b/patronesEstructurales/patronProxy/ImagenProxy.java new file mode 100644 index 0000000..d72758b --- /dev/null +++ b/patronesEstructurales/patronProxy/ImagenProxy.java @@ -0,0 +1,26 @@ +package patronProxy; + +//Esto es el sistema B +public class ImagenProxy implements Imagen{ + + private String nombreFichero; + private ImagenReal imagen; //Tiene una instancia de ImagenReal + + public ImagenProxy(String nombreFichero) { + this.nombreFichero = nombreFichero; + } + + + public void visualizarImagen() { + + //Al cargar el nombre del fichero vemos si es la primera vez + //Si lo es la guardamos. + if(imagen==null) { + imagen = new ImagenReal(nombreFichero); + }else { + System.out.println("Encontrada imagen en el proxy. No necesaria carga."); + } + imagen.visualizarImagen(); + } + +} diff --git a/patronesEstructurales/patronProxy/ImagenReal.java b/patronesEstructurales/patronProxy/ImagenReal.java new file mode 100644 index 0000000..d011fda --- /dev/null +++ b/patronesEstructurales/patronProxy/ImagenReal.java @@ -0,0 +1,21 @@ +package patronProxy; + +//Esto es el Sistema A +public class ImagenReal implements Imagen{ + + private String nombreFichero; + + public ImagenReal(String nombreFichero) { + this.nombreFichero = nombreFichero; + cargarImagenDesdeElDisco(); + } + + private void cargarImagenDesdeElDisco() { + System.out.println("Cargando "+nombreFichero+" desde el disco al proxy"); + } + + public void visualizarImagen() { + System.out.println("Visualizando "+nombreFichero); + } + +} diff --git a/patronesEstructurales/patronProxy/Main.java b/patronesEstructurales/patronProxy/Main.java new file mode 100644 index 0000000..b788729 --- /dev/null +++ b/patronesEstructurales/patronProxy/Main.java @@ -0,0 +1,16 @@ +package patronProxy; + +public class Main { + + public static void main(String[] args) { + + Imagen imagen1 = new ImagenProxy("Foto1"); + Imagen imagen2 = new ImagenProxy("Foto2"); + + imagen1.visualizarImagen(); //carga del fichero en Proxy necesaria + imagen2.visualizarImagen(); //carga del fichero en Proxy necesaria + imagen1.visualizarImagen(); //carga en el Proxy no necesaria + + } + +}