From: Kouba T. <to...@ne...> - 2003-04-28 12:00:52
|
Zdravim a preji pekny den, diky za odpoved. Mam k tomu jeste dva vicemene dotazy: 1. V cem je to lepsi naz klasicka staticka metoda, kterou mohu volat odkudkoliv bez instance? 2. V cem je to lepsi nez normalni instance Loggeru? Pokud jsou me dotazy stupidni, omlouvam se. Mejte se fajn. P.S. zadna FA neprisla. -- Kouba Tomas mailto:to...@ne... > Kouba Tomas wrote: > > Mohl bych poprosit o strucny priklad. Dekuji... > > > > Uvedu tedy priklad: > > public class Context { > > private static final String NO_REQUEST="zadny request nebyl > nastaven"; > > //v kazdem threadu je jina hodnota > private static ThreadLocal requests = new ThreadLocal() { > protected Object initialValue() { > return NO_REQUEST; > } > }; > > public static Logger getLog() { > Logger.getInstance(); > } > > public static HttpRequest getRequest() { > if (requests.get().equals(NO_REQUEST) > throw new RuntimeException(NO_REQUEST); > (Request) requests.get(); > } > > //seter pro request > static void setRequest(HttpRequest request) { > requests.put(request); > } > > public static User getUserId() { > getRequest().getSession().get("user",new EmptyUser()); > } > } > > No a pouziti je trivialni - > > Logger log = Context.getLog(); > Request request = Context.getRequest(); > ... > Proste vsechno pouziva klasicky Bean pattern, tedy getX a setX metody, > pricmez setX metody jsou chraneny, a to jak ruznymi testy, tak nativnimi > bezpecnostnimi pravidly. > > Je to o tom, ze vsechno je zabaleno do jednoho objektu. > Je samozrejme mozne, tak jako jsme to delali my v Dialogusu, > predavat onen kontext ve volani metod, ale po dukladnych analyzach > delanych loni lidmi z IBM byl navrzen prave tento staticky pristup. > > > -- > Oto 'tapik' Buchta, ta...@sy... > R&D team, Systinet Corp. (formerly Idoox) > http://www.systinet.com > > |