Robyf1 ha scritto:
Quindi la classe potrei scriverla così:
Sì, la forma è quella. Con solo un piccolo appunto: quel campo static folder NON va bene, usa una variabile locale nel isFolder(Path) .
Robyf1 ha scritto:
Rimane Singleton?
No, NON è affatto un "singleton". Di fatto non c'è mai alcuna istanza di quella classe, così come è scritta e usata.
Robyf1 ha scritto:
E' una classe statica?
No, ti ripeto che le classi "top-level" non sono e non possono mai essere "static". Le "nested" class (in contrapposizione alle "inner" class) sono marcate static (come mostrato prima).
Domanda: provieni da C#/.NET dove il concetto di "classe statica" ha un senso DIVERSO da Java??
Robyf1 ha scritto:
invece quando conviene utilizzare il getInstance()? Non dovrebbe sostituire il new MiaClasse(); quindi evitare di avere molteplici istanze?
Precisiamo una cosa: avere un getInstance() statico in una classe NON vuol dire necessariamente che sia per un "singleton". E al contrario invece puoi fare una classe "singleton" SENZA mettere un metodo getInstance() (o altro nome che sia).
"Singleton" vuol dire una cosa semplice: c'è una sola ed unica istanza della classe. Quindi la creazione di questa istanza deve (ripeto:
deve) essere molto "controllata". Non può essere creata esplicitamente dall'esterno (ovviamente) e la classe deve contenere la logica per garantire che al massimo ne venga creata internamente una sola.
E ci sono svariate varianti per farlo, dipende
quando la istanza deve essere creata (subito al caricamente della classe? O in modo "lazy" solo alla prima richiesta della istanza?) e dipende se si deve considerare l'accesso "concorrente" da parte di più thread oppure no.