He implementado algunas aplicaciones Java ahora, solo aplicaciones de escritorio hasta ahora. Prefiero usar objetos inmutables para pasar los datos en la aplicación en lugar de usar objetos con mutadores (setters y getters ), también llamados JavaBeans.
Pero en el mundo de Java, parece ser mucho más común usar JavaBeans, y no puedo entender por qué debería usarlos en su lugar. Personalmente, el código se ve mejor si solo trata con objetos inmutables en lugar de mutar el estado todo el tiempo.
Los objetos inmutables también se recomiendan en el artículo 15: Minimizar la mutabilidad , Java 2ed efectivo .
Si tengo un objeto Person
implementado como JavaBean , se vería así:
public class Person {
private String name;
private Place birthPlace;
public Person() {}
public setName(String name) {
this.name = name;
}
public setBirthPlace(Place birthPlace) {
this.birthPlace = birthPlace;
}
public String getName() {
return name;
}
public Place getBirthPlace() {
return birthPlace;
}
}
Y lo mismo Person
implementado como un objeto inmutable :
public class Person {
private final String name;
private final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
public String getName() {
return name;
}
public Place getBirthPlace() {
return birthPlace;
}
}
Or closer to an struct
in C:
public class Person {
public final String name;
public final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
}
I could also have getters in the immutable object to hide the implementation details. But since I only use it as a struct
I prefer to skip the "getters", and keep it simple.
Simply, I don't understand why it's better to use JavaBeans, or if I can and should keep going with my immutable POJOs?
Many of the Java libraries seem to have better support for JavaBeans, but maybe more support for immutable POJOs gets more popular over time?