Wzorce projektowe i wzorzec Singleton.

Wzorce projektowe i wzorzec Singleton.
Władyslaw Parchomenko
Władyslaw Parchomenko
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 miesięcy
  • Postów:63
0

Cześć. Zaczynam uczyć się tych Wzorców projektowych, możecie powiedzieć, po to piszemy tam static w inicjalizacji metoda i getMetoda?

Kopiuj
    private static LasyInitialized metoda;
    
    private LasyInitialized(){}
    
    public static LasyInitialized getMetoda(){ // #3
        if(metoda == null)
            metoda = new LasyInitialized();
        return metoda;
    }

Generalnie, czy są istotne dla programista Javy te wszystkie wzorce? Jeżeli większość pracy dla Java, to praca z Back-Endem, jakie muszę znać wzorce,żeby zostać Junior Java Developerem?

mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Wzorce są ważne niezależnie od języka programowania, w 90% są to uniwersalne wzorce które stosuje się wszędzie.


It's All About the Game.
Bartosz Stępień
  • Rejestracja:około 8 lat
  • Ostatnio:około 15 godzin
  • Postów:13
0

Poprawiłem trochę Ci nazewnitctwo.

Kopiuj
 private static LazyInitialized instance;

    private LazyInitialized(){}

    public static LazyInitialized getInstance(){ // #3
        if(instance== null){
            instance = new LasyInitialized();
        }
            
        return instance;
    }

Singleton umożliwia stworzenie jednej instancji klasy, do którego inne obiekty mogą mieć dostęp. Prywatny konstruktor blokuje możliwość stworzenia go ręcznie w innym fragmencie kodu. Właśnie dlatego, że jest zablokowany konstruktor to udostępnia się metodę statyczną, która zwraca instancję tej klasy.

Tak są istotne. Nie musisz znać ich na pamięć, ale warto wiedzieć do czego dany wzorzec się wykorzystuje.
Polecam Ci przejrzeć stronę https://www.dofactory.com/net/design-patterns gdzie znajdziesz przykłady wzorców. Co prawda kody są w C#, ale na pewno w sieci znajdziesz odpowiednik dla Javy.

edytowany 2x, ostatnio: Bartosz Stępień
mr_jaro
To w javie są globalne obiekty? O.o Raczej instancja klasy jest trzymana w statycznym polu tej klasy.
Bartosz Stępień
@mr_jaro: racja, mój błąd. Czas iść spać chyba jak takie babole piszę
Władyslaw Parchomenko
Władyslaw Parchomenko
Czyli nazwa instance zawsze musi być w Singltonie? Taka tradycja/zasada, tak?
mr_jaro
@Władyslaw Parchomenko: a jak to inaczej nazwiesz, skoro ta zmienna trzyma instancje dokładnie tej klasy w której się znajduje?
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:3 minuty
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
5

W ramach kształcenia polecam projekt https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Najpierw zrób podane zadanie sam (jest proste), a potem zobacz jak to robią profesjonaliści. Prawie wszystkie wzorce zastosowane.


jeden i pół terabajta powinno wystarczyć każdemu
abrakadaber
abrakadaber
:D
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:1788
3

po to piszemy tam static w inicjalizacji metoda i getMetoda

Zanim zabierzesz się za wzorce, to przyswój dobrze składnie Javy, bo bez tego osiągniesz wysoki poziom frustracji. Jak już przyswoisz składnię, to polecam tą stronę https://refactoring.guru/design-patterns

Masz tam opisane wszystkie wzorce, przykłady w różnych językach, opisane to, jakie problemy rozwiązują, kiedy używać i z jakimi innymi wzorcami się dany wzorzec często łączy.

Władyslaw Parchomenko
Władyslaw Parchomenko
Niby wiem to wszystko. Ale nie rozumiem po co daliśmy tam static, możesz wytłymaczyć?
DE
Ponieważ nie możesz wywołać metody bez instancji klasy, chyba że jest statyczna. Jak nie dasz static, to nie utworzysz obiektu, bo konstruktor jest prywatny w przypadku Singletona.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.