package clases;
/**
*
-
@author Jimmis J. Simanca
*/
public class Usuario {private String nombre;
private String apellido;private boolean medioContacto;//Opcional
private String email;
private String telefono;
private String direccion;
private String metodoPago;
private String token;//Solo podemos agregar un metodo de pago cuando direciion emial y telefono tengan un valor
//cuando se asigne metodo de pago se abilita un tokenprivate Usuario(String nombre, String apellido){
this.nombre = nombre;
this.apellido = apellido;this.medioContacto = false; this.email = ""; this.telefono = ""; this.direccion = ""; this.metodoPago = ""; this.token = ""; }
public static Usuario Make(String nombre, String apellido){
return new Usuario(nombre, apellido);
}public Usuario Build(){
return this;
}public BuilderUsuario setMedioContacto(boolean medioContacto){
if(!medioContacto){ throw new IllegalArgumentException("No es posible asignar un valor falso a maedio de contacto"); } this.medioContacto = medioContacto; return new BuilderUsuario(this); }
@Override
public String toString() {
return “” + this.nombre + “ “ + this.apellido + “ “ + this.email + “ “ + this.telefono + “ “ +this.direccion + “ El metodo de pago es: “+ this.metodoPago;
}public static class BuilderUsuario{
private Usuario usuario;public BuilderUsuario(Usuario usuario){ this.usuario = usuario; }
public BuilderUsuario setDireccion(String direccion) {
usuario.direccion = direccion;
return this;
}public BuilderUsuario setEmail(String email) {
usuario.email = email;
return this;
}public BuilderUsuario setTelefono(String telefono) {
usuario.telefono = telefono;
return this;
}
public BuilderUsuario setMetodoPago(String metodoPago) {
if(usuario.email == “” ||usuario.telefono == “” ||usuario.direccion == “”){
throw new IllegalArgumentException(“completo todos los campos”);
}else{
usuario.metodoPago = “PSE”;
return this;
}
}
public BuilderUsuario setToken(String token) {
if(usuario.metodoPago.equals(“PSE”)){
usuario.token = usuario.metodoPago;
}else {
throw new IllegalArgumentException(“No a completado el metodo de pago”);
}
return this;
}public Usuario Build(){
return usuario;
}
}
}
//metodo main
package testBuild;
import clases.Usuario;
/**
*
-
@author Jimmis J. Simanca
*/
public class Main {public static void main(String[] args) {
Usuario usuario1 = Usuario.Make("Keren","Simanca").setMedioContacto(true) .setDireccion("Monteria").setEmail("keren@gmial.com") .setTelefono("3007342741").setMetodoPago("PSE").setToken("").Build(); System.out.println(usuario1); }
}