Frage

Statt eine Schnittstelle wie folgt aus:

public interface IStartable
{
    void Start();
    void Stop();
}

Ich mache in der Regel nur der Konstruktor eines Objekts den Start () Code ausführen, und implementieren IDisposable, so dass die dispose-Methode der Stop () Code ausgeführt wird.

Ist es nur eine Frage des Stils? Oder bin ich etwas fehlt wichtig indem sie nicht so etwas wie IStartable zu haben? Alles, was ich zusätzliche Komplexität zu sehen, weil Sie es gestartet maintain müssen / gestoppten Zustand.

Was sind die Vor- und Nachteile des Start / Stopp-vs mit Ctor / entsorgen, insbesondere im Rahmen eines IoC / DI-Container?

EDIT: Great Antworten, Sie haben uns davon überzeugt, eine Schnittstelle für startbar Objekte zu verwenden. Ich kann nicht entscheiden, wer Antwort ist die beste, so werde ich akzeptieren, wer die meisten up Stimmen nach 24 Stunden hat.

War es hilfreich?

Lösung

Der allgemeine Vorteil eine Schnittstelle zu verwenden ist, dass sie selbsterklärend und Eigenwerbung. Wenn es keine Schnittstelle ist, haben Sie keine Möglichkeit, ein Objekt zu fragen: „Sie können gestartet und gestoppt werden?“ Wenn Sie eine Schnittstelle verwenden, laden hingegen können Sie Objekte abfragen, welche von ihnen zu sehen, wird auf diese Art von Nachrichten zu antworten. Dann können Sie sicher garantiert werden, dass diese Objekte die Funktionalität durch die Schnittstelle gekapselt implementiert haben.

Andere Tipps

im Allgemeinen, Konstrukteuren ein ordnungsgemäß initialisierte Objekt erzeugen sollten

und nichts mehr!

Es könnte möglicherweise auf das, was abhängig, speziell, Sie meinen Fall zu sein, wenn Sie sagen Start (). Aber im allgemeinen Misch Objektinitialisierung mit Routine Ausführung (insbesondere Stateful und / oder langen Laufe Ausführung!) Gegen SoC .

Es läßt auch ein hohes Maß an Mehrdeutigkeit. An einen Verbraucher, für ein bestimmtes Objekt, wie können wir wissen, es ist „Start“, wenn wir die Ctor aufrufen? „Für dieses gegebene Objekt, das keinen Vertrag implementiert, muß ich überlasse es in dem Autor zu hoffen, dass es meine Erwartungen erfüllt“? Eine Schnittstelle macht das Vorhandensein und die Verfügbarkeit der Aktion explizit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top