Singleton è un anti-modello?

Apr 02 2023
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.

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!