Czy adnotacje w Jave są oparte o wzorzec projektowy dekorator?
Nie.
Jeśli chcesz jakieś słówko teoretyczne, uogólnienie adnotacji, to metaprogramowanie trochę pasuje
pioflor napisał(a):
Czy adnotacje w Jave są oparte o wzorzec projektowy dekorator?
Spróbuj sam sobie napisać (jest to dosyć proste) jedną adnotację i oznaczyć nią jakąś klasę/metodę. Wtedy na tej klasie (Class.class/Obiekt.getClass()) lub metodzie (refleksją) pobrać tę adnotację i "coś" dzięki temu zrobić.
https://www.tutorialspoint.com/java/lang/package_isannotationpresent.htm
Zasadzniczo część adnotacji robi to co robi się dekoratorem. Tylko w biedny sposób. Biedekorator.
W zasadzie to nie adnotacje to robią, tylko kontenery, które rozwalają twój kod w czasie uruchomienia (spring, java ee). Rozwalanie opieraja właśnie o adnotacje.
Warto też dodać, że sam dekorator to też troszkę bieda z nędzą.
Warto też dodać, że sam dekorator to też troszkę bieda z nędzą.
Niby dlaczego?
Po prostu, po co wprowadzać dodatkowe nazwy na proste złożenie funkcji. IMO myślenie o dekoratorze
utrudnia abstrahowanie.
@jarekr000000: wyobraź sobie że nie wszystko jest prostym złożeniem funkcji. poza tym dekorator powstał dużo wcześniej niz hype na FP jaki jest teraz
scibi92 napisał(a):
@jarekr000000: wyobraź sobie że nie wszystko jest prostym złożeniem funkcji. poza tym dekorator powstał dużo wcześniej niz hype na FP jaki jest teraz
W zasadzie wszystko na maszynie turinga jest złożeniem, aplikacją albo definicją funkcji - ew jest równoważne. A hype na fp to może był w 1936 - teraz to już nudy :-)
Adnotacje w Javie nie są oparte o dekorator natomiast twórcy Javy korzystali z tego wzorca przy tworzeniu IO pierwszej wersji, gdzie konkretne strumienie wrapujesz innymi, by nadać pewnych cech.