Cvicenie - Navrhove vzory 3.3.2022 9:15
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Cvičenie z návrhových vzorov nadviazalo na vzor Observer: vyučujúca zhodnotila domáce riešenia (forecast display) a predstavila variant s triedou Observable a rozhraním Observer z balíka java.util. Subjekt (WeatherData) v ňom dedí z Observable, takže nepotrebuje vlastný zoznam pozorovateľov, a dáta si pozorovatelia ťahajú getrami (model pull). Nevýhodou je dedičnosť, keďže Java nepozná viacnásobné dedenie, a chránená metóda setChanged; trieda aj rozhranie sú od Javy 9 deprecated. Následne sa prešlo k úlohe 3, malej Swing aplikácii, kde je vzor Observer použitý v udalostnom modeli: tlačidlo je subjekt a ActionListener pozorovateľ, pričom sa pridávajú a odoberajú ďalší poslucháči (Pes, Counter).
- - Observable a Observer z java.util sú hotová implementácia vzoru Observer, ktorá odstraňuje vlastný zoznam pozorovateľov.
- - Subjekt dedí z Observable a po zmene volá setChanged() a notifyObservers().
- - Volanie notifyObservers() bez parametra znamená model pull: pozorovateľ si cez gettery vezme len potrebné údaje.
- - Obmedzenia riešenia: jednoduchá dedičnosť v Jave, chránená metóda setChanged a označenie deprecated od Javy 9.
- - Udalostný model v Swingu je praktickým príkladom vzoru: tlačidlo je subjekt, ActionListener je pozorovateľ.
- - Poslucháčov možno pridávať a odoberať cez addActionListener a removeActionListener, odobraný objekt už nereaguje.
- - Layout manager (napr. FlowLayout) ukazuje vzor Strategy, lebo rozmiestnenie komponentov určuje vymeniteľná stratégia.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky