È consentito creare più istanze di una classe singleton?

0

Sono confuso quando leggo questo (per quanto riguarda il modello di disegno singleton):

How do we ensure that a class has only one instance and that the instance is easily accessible? A global variable makes an object accessible, but it doesn't keep you from instantiating multiple objects.

Quindi a che serve il modello singleton se possiamo creare più istanze?

FONTE:

Modelli di progettazione - Elementi del software orientato agli oggetti riutilizzabili (1995) - Gamma, Helm, Johnson, Vl

    
posta joey rohan 11.04.2013 - 16:44
fonte

4 risposte

4

Senza il testo completo questo non è sicuro, ma la mia (in qualche modo educata) indovina:

Loro avvertono solo che una variabile globale non è il modo giusto per assicurarsi di avere un singleton. Il seguente testo dovrebbe quindi mostrare come farlo all'interno della classe che dovrebbe essere un singleton.

    
risposta data 11.04.2013 - 16:48
fonte
2

Nella citazione non parlano di come farlo, ma come non farlo.

Qualche approccio per ottenere singleton è quello di rendere il costruttore privato e scrivere un proprio metodo statico, che crea un nuovo elemento alla prima chiamata, lo salva in un variabile statica e restituisce sempre questo oggetto quando viene richiamato di nuovo.

    
risposta data 11.04.2013 - 16:52
fonte
2

Ci sono pochissime lingue che ti impediscono di sparare ai piedi se vuoi davvero farlo. Il modello singleton rende abbastanza semplice il mantenimento di un'istanza della classe e la creazione di più istanze di essa è piuttosto difficile; creare più istanze involontariamente - impossibile.

La maggior parte dei modelli di progettazione consente di semplificare la vita del programmatore e rimuovere i loro mal di testa. Possono essere elusi e possono essere fatte delle eccezioni. Il singleton è quello di rimuovere il mal di testa di guardare quando e dove si istanzia una classe ci dovrebbe essere solo una istanza di.

È il tipo di pensiero "Prenderò freddo di proposito, per disprezzare i miei genitori" se si tenta di creare più di una istanza di una classe designata come singleton. Le persone adulte non lo fanno.

    
risposta data 11.04.2013 - 16:56
fonte
-2

In caso di una classe di singelton. Posso creare oggetti multipe usando Malloc. Ad esempio: -

Singeltone * ptr = (Singeltone *) malloc (sizeof (Singeltone));

    
risposta data 29.05.2013 - 08:08
fonte

Leggi altre domande sui tag