У мене є два об'єкти, які являють собою "Бар / Клуб" (місце, де ви п'єте / спілкуєтесь).
В одному сценарії мені потрібна назва смуги, адреса, відстань, слоган
В іншому випадку мені потрібна назва смуги, адреса, 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
ідентифікатора!