Tôi có hai đối tượng đại diện cho một 'Bar / Câu lạc bộ' (một nơi bạn uống / giao lưu).
Trong một kịch bản tôi cần tên thanh, địa chỉ, khoảng cách, khẩu hiệu
Trong một kịch bản khác, tôi cần tên thanh, địa chỉ, url trang web, logo
Vì vậy, tôi đã có hai đối tượng đại diện cho cùng một thứ nhưng với các lĩnh vực khác nhau.
Tôi thích sử dụng các đối tượng bất biến, vì vậy tất cả các trường được đặt từ hàm tạo .
Một tùy chọn là có hai hàm tạo và null các trường khác, ví dụ:
class Bar {
private final String name;
private final Distance distance;
private final Url url;
public Bar(String name, Distance distance){
this.name = name;
this.distance = distance;
this.url = null;
}
public Bar(String name, Url url){
this.name = name;
this.distance = null;
this.url = url;
}
// getters
}
Tôi không thích điều này vì bạn sẽ phải kiểm tra null khi bạn sử dụng getters
Trong ví dụ thực tế của tôi, kịch bản đầu tiên có 3 trường và kịch bản thứ hai có khoảng 10 trường, vì vậy sẽ là một nỗi đau thực sự khi có hai hàm tạo , số lượng trường tôi sẽ phải khai báo null và sau đó khi đối tượng được sử dụng, bạn sẽ không Tôi không biết Bar
bạn đang sử dụng ở đâu và vì vậy những lĩnh vực nào sẽ là null và những gì sẽ không.
Tôi có những lựa chọn nào khác?
Hai lớp gọi BarPreview
và Bar
?
Một số loại kế thừa / giao diện?
Một cái gì đó khác là tuyệt vời?
You should only ask practical, answerable questions based on actual problems that you face.
và đó chính xác là những gì đang xảy ra ở đây
Bar
làm định danh!