У меня есть два объекта, которые представляют «Бар / Клуб» (место, где вы пьете / общаетесь).
В одном сценарии мне нужно имя бара, адрес, расстояние, слогон
В другом сценарии мне нужно название бара, адрес, URL сайта, логотип
Итак, у меня есть два объекта, представляющих одно и то же, но с разными полями.
Мне нравится использовать неизменяемые объекты, поэтому все поля задаются из конструктора .
Один вариант - иметь два конструктора и обнулять другие поля, т.е.
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
}
Мне это не нравится, так как вам придется проверять ноль, когда вы используете геттеры
В моем реальном примере первый сценарий имеет 3 поля, а второй - около 10, так что было бы очень сложно иметь два конструктора , количество полей, которые я должен был бы объявить нулевым, а затем, когда объект используется, вы не захотите Не знаю, какие Bar
вы используете, и какие поля будут нулевыми, а какие нет.
Какие еще варианты у меня есть?
Два класса называется BarPreview
и Bar
?
Какой-то тип наследования / интерфейс?
Что-то еще, что удивительно?
You should only ask practical, answerable questions based on actual problems that you face.
и это именно то, что здесь происходит
Bar
в качестве идентификатора!