Voy a tratar un problema que ocurre por estas fechas navideñas cuando un menor de edad te pide que le prepares un Mojito o cualquier tipo de bebida alcohólica.
Por si no lo habéis notado el ejemplo que os voy a mostrar es como preparar un Mojito en condiciones :)
public class Mojito {
private final int mRon; //centilitros
private final int mAzucar; //cucharadas
private final int mLima; // un trozo es lo recomendable
private final int mMenta; // 2 hojas está bien
private final int mRefresco; // decilitros
public Mojito(int ron, int azucar, int lima, int menta, int refresco){
mRon = ron;
mAzucar = azucar;
mLima = lima;
mMenta = menta;
mRefresco = refresco ;
}
mRon = ron;
mAzucar = azucar;
mLima = lima;
mMenta = menta;
mRefresco = refresco ;
}
public Mojito(int ron, int azucar, int gaseosa){
this(ron, azucar, 1, 2, gaseosa);
}
/* El problema ocurre cuando un niño te pide que le prepares una de esas bebidas tan chulas. Así que tenemos que crear otro constructor y usar lo siguiente */
public Mojito(int azucar, int lima , int gaseosa){
this(0, azucar, lima, 2, gaseosa);
}
public Mojito(int azucar, int lima , int gaseosa){
this(0, azucar, lima, 2, gaseosa);
}
}
Bien ahora ocurre lo siguiente al crear un mojito pasa lo siguiente
Mojito m = new Mojito(5, 3, 0, 6, 2);
Que cantidad corresponde a que elemento si todos reciben los mismos parametros. Bien esto se soluciona de la siguiente manera.
public class Mojito {
private final int mRon; // centrilitros
private final int mAzucar; // cucharadas
private final int mLima; // un trozo es recomendable
private final int mMenta; // 2 hojas esta bien
private final int mRefresco; // decilitros
private Mojito(Builder builder) {
mRon = builder.mRon;
mAzucar = builder.mAzucar;
mLima = builder.mLima;
mMenta = builder.mMenta;
mRefresco = builder.mRefresco;
}
public static class Builder {
private int mRon; // centilitros
private int mAzucar; // cucharadas
private int mLima; // un trozo es recomendable
private int mMenta; // 2 hojas esta bien
private int mRefresco; // decilitros
public Builder() {
}
public Builder setRon(int ron) {
mRon = ron;
return this;}
public Builder setAzucar(int azucar) {
mAzucar = azucar;
return this;}
public Builder setLima(int lima) {
mLima = lima;
return this;}
public Builder setMenta(int menta) {
mMenta = menta;
return this;}
public Builder seRefresco(int refresco) {
mRefresco = refresco;
return this;}
public Mojito build() {
return new Mojito(this);}
}
}
De esta forma el crear un mojito será un poco largo pero facil de entender.
Mojito m = new Mojito.Builder().setRon(5)
.setAzucar(3)
.setLima(3)
.setMenta(5)
.setRefresco(2).build();
El paso anterior no se debe omitir ya que es el que inicializa la cantidad de cada elemento, para ahorrarnos podemos indicar en la Class inicial que cantidad tiene cada elemento.
Bien, explicado esto la creación de los Mojitos es muy sencilla.
Mojito offical = new Mojito.Builder().build();
// mojito para niños
Mojito sinMojito = new Mojito.Builder().setRon(0).build();
// O ...
Mojito sinMojito2 = new Mojito.Builder(0).build();
Que disfrutéis de un buen Mojito, hasta la próxima ;) Y Feliz Año Nuevo