Ho due oggetti che rappresentano un "Bar / Club" (un posto dove bevi / socializzi).
In uno scenario ho bisogno del nome della barra, dell'indirizzo, della distanza, dello slogan
In un altro scenario ho bisogno del nome della barra, dell'indirizzo, dell'URL del sito web, del logo
Quindi ho due oggetti che rappresentano la stessa cosa ma con campi diversi.
Mi piace usare oggetti immutabili, quindi tutti i campi sono impostati dal costruttore .
Un'opzione è avere due costruttori e annullare gli altri campi, ovvero:
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
}
Non mi piace perché dovresti controllare nulla quando usi i getter
Nel mio esempio reale il primo scenario ha 3 campi e il secondo scenario ha circa 10, quindi sarebbe una vera seccatura avere due costruttori , la quantità di campi che dovrei dichiarare nulla e quindi quando l'oggetto è in uso non lo faresti ' non so quale Bar
dove stavi usando e quindi quali campi sarebbero nulli e cosa no.
Quali altre opzioni ho?
Due classi chiamate BarPreview
e Bar
?
Qualche tipo di eredità / interfaccia?
Qualcos'altro che è fantastico?
You should only ask practical, answerable questions based on actual problems that you face.
ed è esattamente quello che sta succedendo qui
Bar
come identificatore!