Tengo dos objetos que representan un 'Bar / Club' (un lugar donde bebes / socializas).
En un escenario, necesito el nombre de la barra, la dirección, la distancia, el eslogan
En otro escenario, necesito el nombre de la barra, la dirección, la URL del sitio web, el logotipo
Entonces tengo dos objetos que representan la misma cosa pero con diferentes campos.
Me gusta usar objetos inmutables, por lo que todos los campos se establecen desde el constructor .
Una opción es tener dos constructores y anular los otros campos, es decir:
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
}
No me gusta esto, ya que tendrías que verificar nulo cuando utilizas los captadores
En mi ejemplo real, el primer escenario tiene 3 campos y el segundo escenario tiene aproximadamente 10, por lo que sería un verdadero problema tener dos constructores , la cantidad de campos que tendría que declarar nulo y luego, cuando el objeto esté en uso, no No sé cuál estaba Bar
usando y qué campos serían nulos y cuáles no.
¿Qué otras opciones tengo?
Dos clases llamadas BarPreview
y Bar
?
¿Algún tipo de herencia / interfaz?
¿Algo más que es asombroso?
You should only ask practical, answerable questions based on actual problems that you face.
y eso es exactamente lo que está sucediendo aquí
Bar
como identificador!