From: Kouba T. <to...@ne...> - 2003-04-25 16:55:37
|
Mohl bych poprosit o strucny priklad. Dekuji... -- Kouba Tomas mailto:to...@ne... > > > > celou aplikaci se mi tahne nekolik objektu, napriklad logger > (pro neznale > > zapisuje do log souboru). Vzhledem k tomu, ze bude pouzivany ve > spouste trid > > (zapisuje log zaznamy), myslim, ze je nejlepsi ho udelat jako public > > staticky objekt a potom ho lze bez problemu pouzit v cele > aplikaci. Sice se > > snazim udelat aplikaci modularni s tim, ze kazdy modul ma > vlastni rozhrani > > pomoci ktereho se styka s ostatnimi moduly, ale tohle se mi jevi jako > > nejlepsi. > > > > Ted jsem prisel na to, ze bych se mohl rozhodnout, aby pri > zapisu do logu od > > urcite urovne (napr. warning) byl odeslan email na adresu > administratora. Je > > to zajimava, vypinatelna features a tak jsem premyslel jak na > to. Asi bude > > nejlepsi misto statickeho objektu odelat statickou metodu a v > ni se to da > > snadno rozsirovat o dalsi features. > > Na takoveto veci je velmi vhodny Context pattern. > > Kazda trida si pomoci staticke metody Context.initialContext() (viz > JNDI, nebo this.getContext(), jak je napriklad pouzito v JSDK) vytahne > aktualni kontext, ve kterem jsou patricne objekty nainstanciovany a > nakonfigurovany. Neni nutne se tedy starat o to, kde je tento objekt > vytvoren, kdo jej vytvoril a kolik jich v aplikaci je. > > getContext() muze tahat kontext s databaze, mit ho ThreadLocal nebo muze > mit statickou implementaci. To je celkem jedno. > Context ma pak public metodu getLogger() (!nestatickou!) > > Jinou moznosti je primo implementovat staticke metody tridy Context, > jako napriklad Context.getLogger(). > > Rozhodnuti je na zvazeni kazdeho implementatora. Ja osobne mam radeji > Context s jedinou statickou metodou. > -- > Oto 'tapik' Buchta, ta...@sy... > R&D team, Systinet Corp. (formerly Idoox) > http://www.systinet.com > > |