Saya memiliki dua objek yang mewakili 'Bar / Klub' (tempat Anda minum / bersosialisasi).
Dalam satu skenario saya perlu nama bar, alamat, jarak, slogon
Dalam skenario lain saya perlu nama bar, alamat, url situs web, logo
Jadi saya punya dua objek yang mewakili hal yang sama tetapi dengan bidang yang berbeda.
Saya suka menggunakan objek yang tidak dapat diubah, jadi semua bidang diatur dari konstruktor .
Salah satu opsi adalah memiliki dua konstruktor dan membatalkan bidang lainnya yaitu:
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
}
Saya tidak suka ini karena Anda harus memeriksa nol ketika Anda menggunakan getter
Dalam contoh nyata saya, skenario pertama memiliki 3 bidang dan skenario kedua memiliki sekitar 10, jadi akan sangat menyakitkan memiliki dua konstruktor , jumlah bidang yang harus saya nyatakan nol dan kemudian ketika objek sedang digunakan Anda tidak akan ' t tahu di mana Bar
Anda menggunakan dan bidang apa yang akan null dan apa yang tidak.
Opsi apa lagi yang saya miliki?
Dua kelas menelepon BarPreview
dan Bar
?
Beberapa jenis warisan / antarmuka?
Hal lain yang mengagumkan?
You should only ask practical, answerable questions based on actual problems that you face.
dan itulah yang terjadi di sini
Bar
sebagai pengidentifikasi!