|
Korišćenje JavaBeans-a
"Zrno" koristite kao i svaku drugu klasu: novi objekat kreiraćemo new pozivom, ako smo zainteresovani prijavićemo se za primanje događaja koje "zrno" šalje i to je sve. Ako želimo da kreiramo "zrno" čije ime ne znamo u toku pisanja programa, poslužićemo se klasom java.beans.Bean, koja poseduje metod instantiate(), kojim se kreira "zrno" samo na osnovu zadatog naziva.
Kod ozbiljnijeg rada zatrebaće vam i dodatne opcije, kao što je klasa BeanInfo. Klasa Introspector je dovoljno "pametna" da, koristeći Reflection API (niz metoda za analizu nepoznate klase), na osnovu naziva polja, otkrije osobine "zrna". Ovo znatno olakšava posao piscima softverskih komponenti koji ne moraju "ručno" da kreiraju opis. Zgodno je to što Introspector vraća objekat klase BeanInfo, koji sadrži sve otkrivene informacije.
Ako želimo nešto da dodamo opisu, možemo kreirati sopstveni objekat ove klase, a Introspector će ga proslediti, umesto da sam vrši analizu. Ovim postupkom se ne može efikasno sprečiti korišćenje javnih metoda "zrna", jer će svako ko direktno koristi Reflection API moći da dođe do kompletnih podataka. Mogućnosti klase BeanInfo su velike, tako da je moguće pružiti detaljne informacije o "zrnu", počevši od naziva i podataka o proizvođaču preko naziva metoda pa sve do ikona koje će se koristiti za predstavljanje "zrna" u razvojnim alatima.
Interesantno je da BeanInfo podržava internacionalizaciju - isti metodi mogu imati različite nazive, zavisno od područja na kome se koriste. Na sreću, radi se samo o nazivima koji se koriste u razvojnim alatima - u samom kodu se i dalje moraju koristiti originalni nazivi. Niz zanimljivih mogućnosti postoji kada su u pitanju osobine "zrna". Najinteresantnije su mogućnosti postojanja vezanih (bound) i uslovljenih (constrained) osobina. Vezane osobine su kombinacija običnih osobina i događaja. Svaki put kada se neka od vezanih osobina "zrna" promeni, nastaje događaj, koji obaveštava ostale objekte o promeni.
Uslovljene osobine su vrlo slične, ali se događaj emituje pre promene vrednosti, a od primalaca se očekuje da promenu odobre (ne reagujući) ili odbace, emitujući izuzetak PropertyVetoException. Metod za postavljanje nove vrednosti uslovljene promenljive bi glasio public void setStatus(String status) throws PropertyVetoException, uz normalne metode za prijavljivanje i odjavljivanje. JavaBeans specifikacija uključuje i specijalne klase za promenu i podešavanje (customization) osobina "zrna". Ako napravite iole komplikovanije "zrno", možete uz njega isporučiti i Wizard za lakše korišćenje, što će korisnici verovatno s radošću prihvatiti.
|