Я реализовал несколько приложений Java сейчас, пока только настольные приложения.Я предпочитаю использовать неизменяемые объекты для передачи данных в приложении вместо использования объектов с мутаторами (setters и getters ), также называемыми JavaBeans.
Но в мире Java это кажетсягораздо чаще использовать JavaBeans, и я не могу понять, почему я должен использовать их вместо этого.Лично код выглядит лучше, если он работает только с неизменяемыми объектами, а не постоянно изменяет состояние.
Неизменяемые объекты также рекомендуются в Элемент 15: Минимизировать изменчивость , Эффективная Java 2ed .
Если у меня есть объект Person
, реализованный как JavaBean это будет выглядеть так:
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;
}
}
И тот же Person
реализован как неизменяемый объект:
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;
}
}
Илиближе к struct
в C:
public class Person {
public final String name;
public final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
}
Я мог бы также иметь геттеры в неизменяемом объекте, чтобы скрыть детали реализации.Но поскольку я использую его только как struct
, я предпочитаю пропускать «получатели» и сохранять его простым.
Проще говоря, я не понимаю, почему лучше использовать JavaBeans, или если я могу иследует продолжать работу с моими неизменяемыми POJO?
Многие из библиотек Java, похоже, лучше поддерживают JavaBeans, но, возможно, со временем становится все более популярной поддержка неизменяемых POJO?