Singleton VS statische (Klassen-) Variablen [geschlossen]

8

Was ist die beste Vorgehensweise in Swift?

Option 1:

%Vor%

und dann

%Vor%

Option 2:

%Vor%

und dann

%Vor%     
Artyom Devyatov 30.03.2016, 14:52
quelle

1 Antwort

8

tl; dr

Option 1 (Klasse oder Struktur), wenn Sie einen veränderbaren Status speichern, da Sie andere Instanzen benötigen.

Option 2 (Globale Variablen für Bereiche), wenn Sie statische Variablen speichern möchten, da sie schneller sind und weniger Speicher benötigen.

Singleton-Klasse (oder Struktur) mit Variablen

Der globale Staat wird allgemein als "schlechte Sache" betrachtet. Es ist schwer darüber nachzudenken, verursacht Probleme, ist aber manchmal unvermeidbar.

  • Erstellen Sie eine Klasse, wenn Sie mehrere SomeManager Instanzen haben möchten.
  • Ein Singleton kann eine gute Standardinstanz sein, aber es kann Randfälle geben, in denen Sie ein separates Verhalten haben möchten (Testen).
  • Dependency Injection ... ist ein großes Thema, das relevant ist, wenn SomeManager den globalen Status speichert.

Statische Variable

  • Immer verwenden, wenn someVariable eine Konstante ist.
  • Erfordert keinen zusätzlichen Speicher für static var sharedManager = SomeManager() ; Sie verwenden nur den Speicher, den Sie tatsächlich benötigen.
  • Etwas schneller, weil Sie sharedManager nicht in den Speicher laden müssen, sondern auf das Mitglied someVariable zugreifen. Sie haben direkten Zugriff auf someVariable .

Bonustipp:

In Option 2 können Sie SomeManager erstellen, obwohl es nichts bewirkt. Sie können dies verhindern, indem Sie SomeManager in eine Enumeration ohne Fälle umwandeln.

%Vor%

Sie können das immer noch tun:

%Vor%

aber Sie können das nicht tun

%Vor%     
Kevin 30.03.2016, 15:27
quelle

Tags und Links