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]>

Odpovedet emailem