Mircy mam wrażenie, że złapał mnie jakiś ciężki lag mózgu i zaczynam wymyślać koło na nowo: Sytuacja wygląda następująco: chcę tworzyć obiekty klasy, które będą przyjmowały dokładnie taką samą ilość i rodzaj argumentów wejściowych, ale te argumenty będą w każdym przypadku czymś innym i trzeba je będzie obsłużyć w inny sposób.
Teraz pytanie jak to najlepiej zrobić: 1.) Przekazywać to co chcemy z nimi zrobić jako flagę w konstruktorze. 2.) Po utworzeniu obiektu z domyślnym konstruktorem wywoływać odpowiednią metodę, która zmodyfikuje nasz obiekt.
W pierwszym przypadku konstruktor zacznie się babrać i szybko stanie się mocno skomplikowany, drugi znowu wymusza dosyć brzydki sposób tworzenia tych obiektów... Jednak cały czas gdzieś z tyłu głowy mam to, że można to zrobić w jakiś bardziej cywilizowany sposób. Tylko jak?
@Zelber: Jeśli masz skomplikowaną logikę tworzenia obiektów to rozważ stworzenie fabryki. Jeśli będziesz mieć w klasie 20 pól z czego jednocześnie będą używane tylko 3 a reszta będzie nullem, to znak, że powinieneś zrobić jakąś hierarchię klas.
Przekazywać to co chcemy z nimi zrobić jako flagę w konstruktorze.
@labadzak: To słaby pomysł, bo będziesz musiał tą flagę jakoś walidować, a to Ci dodaje niepotrzebną logikę do konstruktora. Ja bym był za wzorcem Fabryki.
Sytuacja wygląda następująco: chcę tworzyć obiekty klasy, które będą przyjmowały dokładnie taką samą ilość i rodzaj argumentów wejściowych, ale te argumenty będą w każdym przypadku czymś innym i trzeba je będzie obsłużyć w inny sposób.
Teraz pytanie jak to najlepiej zrobić:
1.) Przekazywać to co chcemy z nimi zrobić jako flagę w konstruktorze.
2.) Po utworzeniu obiektu z domyślnym konstruktorem wywoływać odpowiednią metodę, która zmodyfikuje nasz obiekt.
W pierwszym przypadku konstruktor zacznie się babrać i szybko stanie się mocno skomplikowany, drugi znowu wymusza dosyć brzydki sposób tworzenia tych obiektów...
Jednak cały czas gdzieś z tyłu głowy mam to, że można to zrobić w jakiś bardziej cywilizowany sposób. Tylko jak?
#programowanie #java
rozważ interfejs/klasę abstrakcyjną lub Builder pattern (https://www.tutorialspoint.com/design_pattern/builder_pattern.htm)
@Zelber: taką samą liczbę argumentów!
#grammarnazi
@labadzak: To słaby pomysł, bo będziesz musiał tą flagę jakoś walidować, a to Ci dodaje niepotrzebną logikę do konstruktora. Ja bym był za wzorcem Fabryki.