On Fri, Feb 17, 2006 at 02:59:32PM +0100, [EMAIL PROTECTED] wrote:
> > Preferujte skladani pred dedicnosti. Je opravdu nutne aby ta factory
> > metoda byla v predkovi? Jaky to ma vyznam?
> > Tom
> Bo chcem aby som aby vsety triedy odvodene z KernelApp boli ako singleton
> a nemusel som si to riesit v kazdom potomkovi
Toto v Jave neni mozne. Predevsim v Jave chybi metody tridy (neco jako
ma Smalltalk), takze by to slo obejit jedine takto humpolacky:
public class KernelApp {
private static Map singletons = new java.util.HashMap();
public static KernelApp getSingleton(Class subclass) {
synchronized(singletons) {
KernelApp s = singletons.get(subclass);
if (s==null) {
//TODO: handle exceptions
s = (KernelApp) subclass.newInstance();
singletons.put(subclass, s);
}
return s;
}
}
}
Ale to jenom pro ilustraci, cele je to ptakovina. Dejte na dobre minene
rady a zadne takoveto singletony nedelejte.
Kdyz uz, tak pouzijte nejaky IoC container (treba Spring) a ten si klidne
dejte jako singleton.
> Marian Stevlik (Michal)
> IS programmer / developer
--
Kamil Podlesak <[EMAIL PROTECTED]>