Commit 733d5118 authored by Josue's avatar Josue

Patron Proxy

parent ded4b230
Pipeline #323 canceled with stages
package org.example.designpatterns.proxy;
import org.example.designpatterns.proxy.interfaces.ICuenta;
import org.example.designpatterns.proxy.interfaces.impl.CuentaBancoAImpl;
import org.example.designpatterns.proxy.interfaces.impl.CuentaBancoBImpl;
import org.example.designpatterns.proxy.model.Cuenta;
import org.example.designpatterns.proxy.proxy.CuentaProxy;
public class App {
public static void main(String[] args) {
Cuenta c = new Cuenta(1, "Josue Ponte", 10000);
ICuenta cuentaProxy = new CuentaProxy(new CuentaBancoBImpl());
cuentaProxy.mostrarSaldo(c);
c = cuentaProxy.depositarDinero(c, 500);
c = cuentaProxy.retirarDinero(c, 200);
cuentaProxy.mostrarSaldo(c);
}
}
package org.example.designpatterns.proxy.interfaces;
import org.example.designpatterns.proxy.model.Cuenta;
public interface ICuenta {
Cuenta retirarDinero(Cuenta cuenta, double monto);
Cuenta depositarDinero(Cuenta cuenta, double monto);
void mostrarSaldo(Cuenta cuenta);
}
package org.example.designpatterns.proxy.interfaces.impl;
import org.example.designpatterns.proxy.interfaces.ICuenta;
import org.example.designpatterns.proxy.model.Cuenta;
public class CuentaBancoAImpl implements ICuenta {
@Override
public Cuenta retirarDinero(Cuenta cuenta, double monto) {
double saldoActual = cuenta.getSaldoInicial() - monto;
cuenta.setSaldoInicial(saldoActual);
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
return cuenta;
}
@Override
public Cuenta depositarDinero(Cuenta cuenta, double monto) {
double saldoActual = cuenta.getSaldoInicial() + monto;
cuenta.setSaldoInicial(saldoActual);
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
return cuenta;
}
@Override
public void mostrarSaldo(Cuenta cuenta) {
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
}
}
package org.example.designpatterns.proxy.interfaces.impl;
import org.example.designpatterns.proxy.interfaces.ICuenta;
import org.example.designpatterns.proxy.model.Cuenta;
public class CuentaBancoBImpl implements ICuenta {
@Override
public Cuenta retirarDinero(Cuenta cuenta, double monto) {
double saldoActual = cuenta.getSaldoInicial() - monto;
cuenta.setSaldoInicial(saldoActual);
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
return cuenta;
}
@Override
public Cuenta depositarDinero(Cuenta cuenta, double monto) {
double saldoActual = cuenta.getSaldoInicial() + monto + 2;
cuenta.setSaldoInicial(saldoActual);
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
return cuenta;
}
@Override
public void mostrarSaldo(Cuenta cuenta) {
System.out.println("Saldo actual: " + cuenta.getSaldoInicial());
}
}
package org.example.designpatterns.proxy.model;
public class Cuenta {
private int idCuenta;
private String usuario;
private double saldoInicial;
public Cuenta(int idCuenta, String usuario, double saldoInicial) {
this.idCuenta = idCuenta;
this.usuario = usuario;
this.saldoInicial = saldoInicial;
}
public int getIdCuenta() {
return idCuenta;
}
public void setIdCuenta(int idCuenta) {
this.idCuenta = idCuenta;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public double getSaldoInicial() {
return saldoInicial;
}
public void setSaldoInicial(double saldoInicial) {
this.saldoInicial = saldoInicial;
}
}
package org.example.designpatterns.proxy.proxy;
import org.example.designpatterns.proxy.interfaces.ICuenta;
import org.example.designpatterns.proxy.interfaces.impl.CuentaBancoAImpl;
import org.example.designpatterns.proxy.model.Cuenta;
import java.util.logging.Logger;
public class CuentaProxy implements ICuenta {
private ICuenta cuentaReal;
private final static Logger LOGGER = Logger.getLogger(CuentaProxy.class.getName());
public CuentaProxy(ICuenta cuentaReal) {
this.cuentaReal = cuentaReal;
}
@Override
public Cuenta retirarDinero(Cuenta cuenta, double monto) {
LOGGER.info("----Cuenta Proxy - Retirar Dinero----");
if(cuentaReal == null) {
cuentaReal = new CuentaBancoAImpl();
return cuentaReal.retirarDinero(cuenta, monto);
} else
return cuentaReal.retirarDinero(cuenta, monto);
}
@Override
public Cuenta depositarDinero(Cuenta cuenta, double monto) {
LOGGER.info("----Cuenta Proxy - Depositar Dinero----");
if(cuentaReal == null) {
cuentaReal = new CuentaBancoAImpl();
return cuentaReal.depositarDinero(cuenta, monto);
} else
return cuentaReal.depositarDinero(cuenta, monto);
}
@Override
public void mostrarSaldo(Cuenta cuenta) {
LOGGER.info("----Cuenta Proxy - Mostrar Saldo ----");
if(cuentaReal == null) {
cuentaReal = new CuentaBancoAImpl();
cuentaReal.mostrarSaldo(cuenta);
} else
cuentaReal.mostrarSaldo(cuenta);
}
}
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