Singleton è un anti-modello?
qui vi racconterò brevemente la storia.
Cos'è un Singleton?
singleton pattern è un modo per avere un'istanza da una classe specifica nell'intera applicazione e fornire un singolo punto di accesso ad essa.
Come si scrive singolo?
esempio:
final class Logs {
static let shared = Logs()
private init() {}
func printLog(_ log:String) {
print("here we do: ===\(log)===")
}
}
possiamo utilizzare questo singleton da qualsiasi punto del programma perché dobbiamo stampare i registri ovunque all'interno dell'app utilizzando lo stesso formato.
Logs.shared.printLog("inside ViewModel and loading some feeds")
URLSession.condiviso
UserDefaults.standard
Singleton è testabile?
In realtà, No, se non usi fai questa modifica:
Global Mutable Shared State : quindi utilizzerai static var instance , public init.
Buono ma i suoi pericoli sono perché puoi cambiarlo da più di un thread.
Dove posso usare Singleton?
con la classe che registra i messaggi nella console come si vede nell'esempio precedente.
Come aggiungere Logic a Singleton?
Estensioni
Sottoclassi
Come gestire singleton da framework di terze parti?
utilizzando l'inversione di dipendenza utilizzando il protocollo / chiusura (interfaccia).
I single possono andare bene. Ma se non stai attento, non sono solo un anti-modello. POSSONO ESSERE PERICOLOSI!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































