Fluent Interface

Supongamos que tenemos una clase llamada "Car" y que tenemos que configurar que tiene 4 ruedas y que además queremos configurar la presión de las 4 ruedas, siguiendo la filosofÃa tradicional, harÃamos:
Car car;
car = new Car();
car.addWheels(4);
int pressure1 = 5;
car.addWheelPressure(pressure1);
int pressure2 = 6;
car.addWheelPressure(pressure2);
int pressure3 = 5;
car.addWheelPressure(pressure3);
int pressure4 = 6;
car.addWheelPressure(pressure4);
La manera de hacerlo mediante Chaining Method, seria la siguiente:
public class Car {
private int wheels;
private ArrayList<Integer> pressure = new ArrayList<Integer>();
public Car addWheels(int wheels) {
this.wheels = wheels;
return this;
}
public Car addWheelPressure(int pressure) {
this.pressure.add(pressure);
return this;
}
public String getCode() {
return "Number of Wheels: " + this.wheels + " \n" +
"Wheel Pressure 1: " + this.pressure.get(0) + " Kg/cm2 \n" +
"Wheel Pressure 2: " + this.pressure.get(1) + " Kg/cm2 \n" +
"Wheel Pressure 3: " + this.pressure.get(2) + " Kg/cm2 \n" +
"Wheel Pressure 4: " + this.pressure.get(3) + " Kg/cm2 \n";
}
}
public class principal {
static Car car;
public static void main(String[] args) {
car = new Car().addWheels(4).
addWheelPressure(5).
addWheelPressure(6).
addWheelPressure(5).
addWheelPressure(6);
System.out.println(car.getCode());
}
}
//La salida del programa muestra:
Number of Wheels: 4
Wheel Pressure 1: 5 Kg/cm2
Wheel Pressure 2: 6 Kg/cm2
Wheel Pressure 3: 5 Kg/cm2
Wheel Pressure 4: 6 Kg/cm2
este método, permite crear clases más simples, más mantenibles y permite una mejor adaptación al lenguaje.
Podéis encontrar más información en los siguientes enlaces:
http://es.wikipedia.org/wiki/Interfaz_fluida
http://en.wikipedia.org/wiki/Method_chaining
http://www.insectnation.org/articles/2007/06/27/covariant-returns-and-method-chaining-in-java/
Podéis encontrar más información en los siguientes enlaces:
http://es.wikipedia.org/wiki/Interfaz_fluida
http://en.wikipedia.org/wiki/Method_chaining
http://www.insectnation.org/articles/2007/06/27/covariant-returns-and-method-chaining-in-java/
Hey, that's da bomb man!
ReplyDelete@override
ReplyDeleteyes man!, da bomb!.