Commit ded4b230 authored by Josue's avatar Josue

Patron Decorator

parent 1cad4c2a
Pipeline #322 canceled with stages
package org.example.designpatterns.decorator;
import org.example.designpatterns.decorator.decorador.BlindajeDecorador;
import org.example.designpatterns.decorator.interfaces.ICuentaBancaria;
import org.example.designpatterns.decorator.interfaces.impl.CuentaAhorro;
import org.example.designpatterns.decorator.model.Cuenta;
public class App {
public static void main(String[] args) {
Cuenta c = new Cuenta(1, "Josue Ponte");
ICuentaBancaria cuenta = new CuentaAhorro();
ICuentaBancaria cuentaBlindada = new BlindajeDecorador(cuenta);
cuenta.abrirCuenta(c);
cuentaBlindada.abrirCuenta(c);
}
}
package org.example.designpatterns.decorator.decorador;
import org.example.designpatterns.decorator.interfaces.ICuentaBancaria;
import org.example.designpatterns.decorator.model.Cuenta;
public class BlindajeDecorador extends CuentaDecorador {
public BlindajeDecorador(ICuentaBancaria cuentaDecorada) {
super(cuentaDecorada);
}
@Override
public void abrirCuenta(Cuenta c) {
cuentaDecorada.abrirCuenta(c);
agregarBlindaje(c);
}
public void agregarBlindaje(Cuenta c) {
System.out.println("Se agregó blindaje a la cuenta del cliente " + c.getCliente());
}
}
package org.example.designpatterns.decorator.decorador;
import org.example.designpatterns.decorator.interfaces.ICuentaBancaria;
import org.example.designpatterns.decorator.model.Cuenta;
public abstract class CuentaDecorador implements ICuentaBancaria {
protected ICuentaBancaria cuentaDecorada;
public CuentaDecorador(ICuentaBancaria cuentaDecorada) {
this.cuentaDecorada = cuentaDecorada;
}
@Override
public void abrirCuenta(Cuenta c) {
this.cuentaDecorada.abrirCuenta(c);
}
}
package org.example.designpatterns.decorator.interfaces;
import org.example.designpatterns.decorator.model.Cuenta;
public interface ICuentaBancaria {
void abrirCuenta(Cuenta c);
}
package org.example.designpatterns.decorator.interfaces.impl;
import org.example.designpatterns.decorator.interfaces.ICuentaBancaria;
import org.example.designpatterns.decorator.model.Cuenta;
public class CuentaAhorro implements ICuentaBancaria {
@Override
public void abrirCuenta(Cuenta c) {
System.out.println("-------------------------------");
System.out.println("Se abíó una cuenta de Ahorros");
System.out.println("Cliente: " + c.getCliente());
}
}
package org.example.designpatterns.decorator.interfaces.impl;
import org.example.designpatterns.decorator.interfaces.ICuentaBancaria;
import org.example.designpatterns.decorator.model.Cuenta;
public class CuentaCorriente implements ICuentaBancaria {
@Override
public void abrirCuenta(Cuenta c) {
System.out.println("-------------------------------");
System.out.println("Se abíó una cuenta de Corriente");
System.out.println("Cliente: " + c.getCliente());
}
}
package org.example.designpatterns.decorator.model;
public class Cuenta {
private int id;
private String cliente;
public Cuenta() {}
public Cuenta(int id, String cliente) {
this.id = id;
this.cliente = cliente;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCliente() {
return cliente;
}
public void setCliente(String cliente) {
this.cliente = cliente;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment