From: Kouba T. <to...@ne...> - 2003-04-29 10:31:20
|
Zdravim a preji pekny den, asi vubec netusite, jak strasne tezke je pro mne nad tim takto premyslet. :-) Musim nad tim dale premyslet. Me pripada, ze oproti klasicke staticke metode tady vzdy pri volani Context vznika zbytecne jeden objekt, ktery by pri pouziti staticke metody (s pripadnymi synchronizacnimi bloky) nevznikl. -- Kouba Tomas mailto:to...@ne... > > > > 1. V cem je to lepsi naz klasicka staticka metoda, kterou mohu volat > > odkudkoliv bez instance? > > > V cem je lepsi singleton nez klasicka staticka metoda bez instance > jsem popisoval v design patternu pro Singleton - moznost nestaticke > konfigurace, > coz se oceni obzvlaste pro ladeni, pri vice instancich atd. > > 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. |