2009-05-21 2 views
0

Wir haben viele Objekte mit dieser Art von Design: Interface und mehrere Implementierungen und die Verwendung mehrerer Objekte durch Komposition. Beispiel: Foo implementiert IFoo und hat ein Bar-Objekt, das IBar implementiert Foo haben auch eine setBar (IBar bar) -Methode für die Injektion von Dependance.Sould Setter für Delegat in der Schnittstelle sein?

Meine Frage ist: der Setter sollte nicht in der Schnittstelle sein? (Zum Testen, Verspotten ... ich stecke fest!)

Antwort

0

Wenn Sie Polymorphie verwenden, d. H. Den Setter auf dem Interface-Typ aufrufen, dann brauchen Sie ihn offensichtlich in der Schnittstelle.

+0

Ja, aber die formale Entwickler tun es nicht. Und ich denke, es ist klug zu verstehen, warum. (vor dem Hinzufügen des Setter) –

0

Entweder injizieren Bar zu Foo mit Setter Injection. In einem Kontext, in dem Foo ohne Bar nicht existieren kann, wäre es angemessener, Bar mit einem Konstruktor zu versehen. Lesen

Weitere: Types of dependency injection

1

Um einen Setter in der Schnittstelle haben nur spöttisch und Prüfung ist nicht gut. Damit erlauben Sie den Benutzern dieser Schnittstelle, beliebige Komponenten zu setzen, obwohl die Eigenschaften dieses Objekts nach der Konstruktion wahrscheinlich nicht änderbar sein sollten. Die Schnittstelle sollte nicht zeigen, wie ein Objekt aufgebaut wird.

Verwandte Themen