Ahoj nerozumime si,

ty hovoris o singletonu jako navrhovem vzoru (kdy IoC kontejner neni potreba) a 
ja hovorim o singletonu jako o moznosti,
ze IoC vrati vzdy tu samou instanci (jednu jedinou). Mam pocit, ze i o to se 
zajimal puvodni tazatel.

Tam ja zadny problem nevidim, myslim, ze ani ty ne. Problem je jenom zase v ty 
podelany terminologii, ktera neni
jednoznacna.

Jira

Roman Pichlík napsal(a):
> problem je v tom, ze jakmile zacnes pouzivat static pristup, tak
> zivotni cyklus tveho objektu a toho jak s nim naklada IoC kontejner je
> diametralne odlisny. Statickou metodu pro vraceni instance toho
> singletonu muze volat kdokoliv kdykoliv bez ohledu na fakt, jestli uz
> IoC kontejner udelal na tom objektu vsechnu svoji praci napr. nastavil
> dependence. To potom vede k tomu, ze system padne nekde uplne jinde na
> NPE v zavislosti na tom, jestli ve chvili volani byla instance
> singletonu vytvorena.
> 
> Dalsi nevyhoda singletonu je v tom, ze ackoliv je to managovana beana,
> lidi ji pouzivaji jako singleton. Misto toho, aby byl ten objekt nekam
> injectnuty se na tom miste pozuije klasicke volani staticke metody.
> Muzu mit tedy dve beany, ktere na sobe neprimo zaviseji pres singleton
> a opet muze dojit k tomu, ze se nevytvori ve spravnem poradi.
> 
> To co v tom dokumentu chybi, a bude doplneno, je fakt, ze ve chvili
> kdy clovek zacne pouzivat singleton jako takovy, tak zacne zavadet do
> sveho systemu opet tesne vazby mezi objekty. Zavislost na singletonu
> proste nezmenim v konfiguraci, ta je zapecena uvnitr kodu. Napriklad
> chci misto singletonu pro testy injectnout mock object, jak to mam
> udelat?
> 
> 
> 2008/10/10 Jiří Mareš <[EMAIL PROTECTED]>:
>> Ahoj Dagi,
>>
>> priznam se, ze dokument mi na tema proc nepouzivat singletony neodpovedel. 
>> Kde je tedy problem, ja jen nevidim ...
>>
>> Diky
>>
>> jira
>>
>> PS. Pod pojmem singleton nemyslim staticke metody a statickou instanci ve 
>> tride, ale nastaveni v xml atribut
>> singleton="true" (podobne jako tazatel).
>>
>> Roman Pichlík napsal(a):
>>> Pokud neni uvedeno jinak, tak IoC kontejner vytvari vsechny managovane
>>> objekty (beany) v singleton modu. To znamena, ze na kontejner pripada
>>> pouze a jenom jedna instance daneho objektu. Jinak navrhovy vzor
>>> singleton je v prostredi, kde se pouziva iversion of control, spise
>>> antivzorem a vede to k problemum popsanym v tomto dokumentu
>>> http://docs.google.com/Doc?id=dn53qgm_7g69mtccp. Myslite
>>>
>>> Takze singletony v zadnem pripade nedelat!
>>>
>>> Hibernate session a nebo HTTP session?
>>>
>>>> Zdravím konferenci
>>>>
>>>> Ve webové aplikaci používám Struts + Spring + Hibernate.
>>>> Pro načítání dat požívám klasickou DAO vrstvu.
>>>> DAO třídy si přes applicationContext Springu vstříkuji ( injection ) do 
>>>> tříd s aplikační logikou (Action class ve Struts).
>>>> DAO třída obsahuje klasické CRUD operace.
>>>>
>>>> Dotaz:
>>>> Mohu nastavit DAO třídy jako singletony? Mám pocit, že by mi to mohlo 
>>>> ušetřit nějaké zdroje, ale nejsem si jistý zda je to bezpečné z hlediska 
>>>> concurrency přístupů.
>>>>
>>>> Ve webové aplikaci by měly být přístupy k objektům ThreadSafe, ale četl 
>>>> jsem o nějakých vyjímkách (např. session).
>> --
>> Jiří Mareš (mailto:[EMAIL PROTECTED])
>> ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
>> Czech Republic
>>
>>
> 
> 
> 

-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

Odpovedet emailem