Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Design Pattern Cercasi

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    66

    Design Pattern Cercasi

    Salve, scusate la richiesta un pò insolita ma mi servirebbe sapere se esiste un design pattern ad hoc per questa situazione: Una semplice gerarchia (con una classe padre e un paio di classi figlie note) a cui deve essere possibile aggiungere altre eventuali classi figlie.


    Mi interessa solo a livello teorico per un diagramma delle classi di analisi.
    Grazie.


  2. #2
    Praticamente il polimorfismo...

    Forse possono esserti utili lo static factory e/o l'abstract factory.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    66
    Grazie dei consigli. Ho applicato il Factory Method.
    Spero che vada tutto bene

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    66
    Emh... ripensandoci sopra mi sono venuti alcuni dubbi atroci... Il pattern factory medhod permette di delegare la creazione di oggetti senza dover conoscere le sottoclassi di una data classe, o quali classi implementano una data interfaccia.
    Ok, però il mio problema era anche che il sistema deve poter aggiungere dinamicamente nuove sottoclassi (che implementano un'interfaccia).
    Questo punto viene svolto dal factory method oppure ho cannato tutto?





    Il problema è questo: una classe "può essere di tipo A, B e C. Deve essere possibile aggiungere al sistema altri eventuali tipi"

  5. #5
    Non so. Tecnicamente nessuno ti impedisce di farlo, ed io l'ho fatto nel mio programma, pero' ho usato un "trucco sporco": le classi le vado a cercare fisicamente sul disco.
    Il metodo che uso e' cmq uno static factory, ma completamente generico, nel senso che la classe base viene fornita come parametro. Te lo posto, cosi' ti fai un idea:

    codice:
     
        public static <T> T defaultClass(Class<T> clazz, String standard) {
            ArrayList<Class<T>> elenco = listSubclasses(clazz);
            try {
                for (Class<T> c : elenco) {
                    if (c.getSimpleName().equals(standard))
                        return c.newInstance();
                }
                return elenco.get(0).newInstance();
            } catch (Throwable t) {t.printStackTrace();}
            return null;
        }
    In pratica il metodo listSubclasses e' il "trucco sporco" di cui ti dicevo. Dopodiche, il metodo cerca la classe "standard" fra le sottoclassi di "clazz" e restituisce una istanza di quella classe. Se non trova "standard", restituisce un'istanza della prima classe trovata compatibile con "clazz".
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.