Mam dwa przedmioty reprezentujące „Bar / Klub” (miejsce, w którym pijesz / spędzasz czas z przyjaciółmi).
W jednym scenariuszu potrzebuję nazwy paska, adresu, odległości, hasła
W innym scenariuszu potrzebuję nazwy paska, adresu, adresu URL strony internetowej, logo
Mam więc dwa obiekty reprezentujące to samo, ale z różnymi polami.
Lubię używać niezmiennych obiektów, więc wszystkie pola są ustawiane z konstruktora .
Jedną z opcji jest posiadanie dwóch konstruktorów i zerowanie pozostałych pól, tj .:
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
}
Nie podoba mi się to, ponieważ musiałbyś zerować sprawdzanie, gdy używasz getterów
W moim prawdziwym przykładzie pierwszy scenariusz ma 3 pola, a drugi scenariusz ma około 10, więc prawdziwym bólem byłoby posiadanie dwóch konstruktorów , ilość pól, które musiałbym zadeklarować jako zerowe, a kiedy obiekt byłby w użyciu, nie byłoby ' t wiem Bar
, gdzie używasz, a więc jakie pola byłyby puste, a co nie.
Jakie inne opcje mam?
Dwie klasy nazwane BarPreview
i Bar
?
Jakiś typ dziedziczenia / interfejsu?
Coś jeszcze, co jest niesamowite?
You should only ask practical, answerable questions based on actual problems that you face.
i dokładnie to się tutaj dzieje
Bar
jako identyfikatora!