Singleton-Muster mit Parameter

8

In meiner iPhone-Anwendung verwende ich eine Unterklasse von AFHTTPClient, um auf einen Rest-Webdienst zuzugreifen. Ich möchte, dass alle meine Anfragen von einer Instanz meines API-Clients bearbeitet werden, also verwende ich ein Singleton-Muster.

Dies funktioniert einwandfrei, wenn der Dienst nur einmal auf URL ausgeführt wird. Ich kann einen konstanten Wert verwenden, um die URL festzulegen.

Jetzt wird in der endgültigen Version der Anwendung jede App tatsächlich mit einem anderen Dienst kommunizieren, der im Firmennetzwerk installiert wird.

Ich werde also die Service-URL von einer Remote-Konfiguration erhalten. Ist das Singleton-Muster noch eine gute Wahl? Wie soll ich es parametrieren, wenn sich die URL während der Laufzeit der App tatsächlich ändern könnte?

Prost

%Vor%     
Jan 03.09.2013, 15:31
quelle

2 Antworten

1

Dies könnte die Lösung sein. Anstatt den AFHTTPClient zu unterklassifizieren, setzen Sie ihn einfach als Eigenschaft und instanziieren Sie ihn erneut, wenn sich die URL ändert:

%Vor%     
Jan 03.09.2013, 20:27
quelle
1

Das Singleton-Muster muss keine Zwangsjacke sein.

Diese Lektion habe ich von Cocoa Touch gelernt. Es gibt mehrere Klassen im Framework, die gemeinsam genutzte Instanzen verwenden. Sie können jedoch flexibel eigene Instanzen erstellen, wenn Sie sie benötigen. NSNumberFormatter, NSDateFormatter, NSBundle, NSFileManager und viele andere sind Beispiele für Klassen, in denen Sie bei Bedarf eigene Instanzen erstellen können.

In Ihrem Fall hätte ich zwei Klassenmethoden, die Instanzen zurückgeben:

%Vor%

Als Nebeneffekt erzwingt dies die Trennung von Klassen- und Instanzverantwortlichkeiten, die in Singleton-Klassen tendenziell verschwimmen.

    
Jeffery Thomas 03.09.2013 19:59
quelle

Tags und Links