IoC-Container - Singleton oder weitergegebene Instanz? [Duplikat]

8

Ich führe einen IoC-Container in das System ein. Die natürliche Frage ist, ob es ein Singleton oder eine Instanz ist, die an eine Klasse weitergegeben wird. Ich lehne mich darauf hin, es als Singleton-Instanz zu haben, weil:

  1. Es muss keine Klassendefinition wie Konstruktoren, zusätzliche Eigenschaften, durcheinander gebracht werden.
  2. Clearer - eine Instanz pro Anwendung, ein Initialisierungsrouting.
  3. Möglichkeit, bei Bedarf eine Standardzuordnung mit Überschreibungen zu haben (wie beim Komponententest).

So sieht es aus:

%Vor%

Gibt es etwas, was ich vermisse und stattdessen sollte ich etwas wie:

haben %Vor%

Natürlich kann ich bei der zweiten Methode immer wieder auf die erste zurückgreifen, indem ich eine Singleton-Container-Instanz umfahre.

EDITED: aktualisierte Codebeispiele

    
Schultz9999 27.01.2011, 18:57
quelle

1 Antwort

31

Weder: Beide Ansätze verbergen Ihre Abhängigkeiten und machen Ihre Klassen schwer zu benutzen. Stattdessen sollte Foo einen IBar in seinem Konstruktor erfordern:

%Vor%

Die einzigen Dinge, die Sie über Ihren Container wissen sollten, sind Ihre Anwendungspunkte.

Siehe Mythos zur Abhängigkeitsinjektion: Referenzübergabe und Service Locator ist ein Anti-Pattern für weitere eingehende Diskussionen.

    
Jeff Sternal 27.01.2011, 19:01
quelle
Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ answer5100702 ___

AFAIK können Sie die gleiche ID in verschiedenen Aktivitäten verwenden, wenn Sie

%Vor%

und Layout aufblasen dann Android selbst sucht nach dieser bestimmten ID in diesem bestimmten Layout, also kein Problem hier.

Hinweis: Dies bedeutet nicht, dass Sie dieselbe ID für ein anderes Element im selben Layout verwenden können

    
___ qstntxt ___

Ich habe mehrere Aktivitäten. Einige der Aktivitäten haben dieselben Schaltflächen wie "Weiter" oder "Abbrechen" usw., von denen jede unterschiedliche Aktionen hat. Nun die Frage ist, kann ich die gleiche ID für die Schaltfläche in verschiedenen Aktivitäten verwenden? Das heißt, kann ich %code% für alle Fortfahren-Schaltflächen in verschiedenen Aktivitäten verwenden. Oder sollte ich %code%

verwenden     
___ tag123androidwidget ___ Dies bezieht sich entweder auf Widgets für den Startbildschirm oder auf allgemeine Benutzeroberflächenelemente, die auf einem Android-Anwendungsbildschirm verwendet werden. ___ tag123androidactivity ___ Fragen zum Erstellen oder Verwalten von Aktivitäten in Android. In Android-Anwendungen ist eine Aktivität eine Komponente, die eine Benutzerschnittstelle bietet, die dem Benutzer erlaubt, etwas zu tun. Einfache Beispiele sind: Wählen Sie das Telefon, machen Sie ein Foto, senden Sie eine E-Mail oder sehen Sie sich eine Karte an. ___ answer5100682 ___

'Ansichten können eine Integer-ID zugeordnet haben. Diese IDs werden normalerweise in den Layout-XML-Dateien zugewiesen und dienen dazu, bestimmte Ansichten in der Ansichtsstruktur zu finden. View-IDs müssen nicht im gesamten View-Tree eindeutig sein. Es wird jedoch empfohlen, sicherzustellen, dass sie mindestens eindeutig sind Teil des Baumes, den du suchst. '(http://developer.android.com/reference/android/view/View.html)

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___