Tôi sử dụng mẫu Builder cho một số lớp của dự án của tôi (nhiều đối số, một số bắt buộc, một số tùy chọn, v.v.). Các lớp này là không thay đổi (không có setters, bản sao sâu cho các bộ sưu tập getters).Pattern Builder và Persistence
Tôi hiện đang cố gắng lưu trữ các đối tượng đó trong cơ sở dữ liệu bằng cách sử dụng khung kiên trì để tạo đối tượng với các hàm dựng + constructor mặc định. Nó không giống như các nhà xây dựng của tôi rất nhiều!
Tôi không muốn làm giảm thiết lập đó thành POJO và mất lợi thế của thiết kế hiện tại (tính linh hoạt, bất biến, bảo mật xây dựng).
Tôi sẽ hoan nghênh bất kỳ phản hồi nào về cách giải quyết có thể được sử dụng trong trường hợp này (tôi có thể bao gồm từng lớp này nhưng sẽ tăng gấp đôi số lớp và tôi muốn tránh điều đó).
Một post thực sự là điểm bất lợi cụ thể của mẫu Trình tạo.
EDIT
Một answer đề nghị sử dụng xây dựng tư nhân/setters nhưng điều đó chỉ hoạt động nếu các lĩnh vực của lớp không phải là cuối cùng, đó không phải là trường hợp của tôi.
CUỐI CÙNG EDIT
Nhờ tất cả.
Những gì tôi nghĩ sẽ được giải pháp cuối cùng của tôi trông như thế này và hoạt động tốt (đối với hồ sơ, tôi đang sử dụng MongoDB + nha phiến):
class AClass {
private final String aField;
private final AClass() {
aField = "";
}
//Standard builder pattern after that - no setters (private or public)
}
Bạn không thể bao gồm người định cư và người xây dựng mặc định nhưng đặt chúng ở chế độ riêng tư? – DaveJohnston
Câu hỏi hay - Tôi sẽ kiểm tra xem – assylias
Tôi biết Hibernate có thể sử dụng trình cài đặt riêng tư và hàm tạo, chỉ cần tự hỏi nếu bạn có bất kỳ điều gì chống lại điều này cho trường hợp cụ thể của bạn. – DaveJohnston