Tôi đã triển khai một vài ứng dụng Java ngay bây giờ, chỉ có các ứng dụng máy tính để bàn cho đến nay. Tôi thích sử dụng các đối tượng không thể thay đổi để truyền dữ liệu xung quanh trong ứng dụng thay vì sử dụng các đối tượng có bộ đột biến (bộ định tuyến và bộ lấy ), còn được gọi là JavaBeans.
Nhưng trong thế giới Java, việc sử dụng JavaBeans dường như phổ biến hơn nhiều và tôi không thể hiểu tại sao mình nên sử dụng chúng thay thế. Theo cá nhân, mã sẽ tốt hơn nếu nó chỉ xử lý các đối tượng không thể thay đổi thay vì thay đổi trạng thái mọi lúc.
Các đối tượng bất biến cũng được khuyến nghị trong Mục 15: Giảm thiểu khả năng thay đổi , Java 2ed hiệu quả .
Nếu tôi có một đối tượng được Person
triển khai dưới dạng JavaBean, nó sẽ giống như sau:
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;
}
}
Và Person
thực hiện tương tự như một đối tượng không thay đổi :
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;
}
}
Hoặc gần hơn với một struct
trong C:
public class Person {
public final String name;
public final Place birthPlace;
public Person(String name, Place birthPlace) {
this.name = name;
this.birthPlace = birthPlace;
}
}
Tôi cũng có thể có getters trong đối tượng bất biến để ẩn các chi tiết triển khai. Nhưng vì tôi chỉ sử dụng nó như một công cụ struct
nên tôi thích bỏ qua "getters" và giữ cho nó đơn giản.
Đơn giản, tôi không hiểu tại sao tốt hơn nên sử dụng JavaBeans, hoặc nếu tôi có thể và nên tiếp tục với các POJO bất biến của mình?
Nhiều thư viện Java dường như có hỗ trợ tốt hơn cho JavaBeans, nhưng có thể nhiều hỗ trợ hơn cho POJO bất biến trở nên phổ biến hơn theo thời gian?