Singleton: Perché un punto di accesso globale è negativo? [duplicare]

0

La maggior parte delle persone qui e su StackOverflow concordano sul fatto che Singletons sia malvagio.

La spiegazione principale su cui mi sono imbattuto contro l'uso di Singletons è che forniscono un punto di accesso globale a un oggetto.

Ammetto di non capire perché questa è una brutta cosa È molto comodo poter accedere a un oggetto importante e utile da qualsiasi punto del codice, senza doverlo "scambiare" per ottenerlo.

Quindi perché un punto di accesso globale in OOP è una brutta cosa? Non solo con Singletons, ma in generale. Per favore, dai esempi concreti.

    
posta Aviv Cohn 11.04.2014 - 13:01
fonte

1 risposta

2

Gli svantaggi sono:

  1. non è ovvio dove viene utilizzato

  2. quando usi qualcosa che la usa, non puoi fornire alternative (specialmente quando collaudi, non vuoi usare ad esempio il pagamento con carta di credito reale)

  3. quando decidi che vuoi due contesti in cui dovrebbe essere univoco, devi riscrivere ogni utilizzo.

Questi svantaggi sono talvolta accettabili, a volte no.

Nota che il problema non sta nel fatto che viene utilizzata solo un'istanza (spesso è molto utile), ma che è codificata e invisibile dall'esterno.

    
risposta data 11.04.2014 - 13:15
fonte

Leggi altre domande sui tag