Singleton ist ein Anti-Pattern?
hier erzähle ich euch kurz die geschichte.
Was ist ein Singleton?
Singleton-Muster ist eine Möglichkeit, dass Sie eine Instanz einer bestimmten Klasse in der gesamten Anwendung haben und einen einzigen Zugriffspunkt darauf bereitstellen.
Wie schreibt man Singleton?
Beispiel:
final class Logs {
static let shared = Logs()
private init() {}
func printLog(_ log:String) {
print("here we do: ===\(log)===")
}
}
Wir können dieses Singleton von überall im Programm verwenden, da wir Protokolle überall in der App im gleichen Format drucken müssen.
Logs.shared.printLog("inside ViewModel and loading some feeds")
URLSession.shared
UserDefaults.standard
ist Singleton testbar?
Eigentlich nein, wenn Sie diese Änderung nicht verwenden:
Global Mutable Shared State : Sie verwenden also static var instance , public init.
Gut, aber seine Gefahren, weil Sie es von mehr als einem Thread aus ändern können.
Wo kann ich Singleton verwenden?
mit der Klasse, die Nachrichten an die Konsole protokolliert, wie wir im vorherigen Beispiel sehen.
Wie füge ich Logik zu Singleton hinzu?
Erweiterungen
Unterklassen
Wie gehe ich mit Singleton aus dem Framework eines Drittanbieters um?
unter Verwendung der Abhängigkeitsinversion unter Verwendung des Protokolls / der Schließung (Schnittstelle).
Singletons können in Ordnung sein. Aber wenn Sie nicht aufpassen, sind sie nicht nur ein Anti-Muster. SIE KÖNNEN GEFÄHRLICH SEIN!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































