2008-11-30 11 views

Antwort

26

Der Wert für die Verwendung einer Schnittstelle ist immer derselbe: Sie müssen den Clientcode beim Wechseln zu einer anderen Back-End-Implementierung nicht ändern.

Beachten Sie, dass das Profiling Ihres Codes später zeigt, dass eine Hashtabellenimplementierung (verwendet in der Dictionary-Klasse) nicht für Ihre Aufgabe geeignet ist und dass ein binärer Suchbaum besser funktioniert. Wenn Sie eine Schnittstelle programmiert haben, ist der Wechsel der Implementierung einfach. Wenn Sie jedoch eine konkrete Klasse verwendet haben, müssen Sie viel mehr Code an viel mehr Stellen ändern. => Das kostet Zeit und Geld.

14

IDictionary ermöglicht lockerere Kopplung.

Sagen Sie bitte ein Verfahren wie dieses:

void DoSomething(IDictionary<string, string> d) 
{ 
    //... 
} 

Sie es wie folgt verwenden können:

Dictionary<string, string> a = new Dictionary<string, string>(); 
SortedDictionary<string, string> b = new SortedDictionary<string, string>(); 
DoSomething(a); 
DoSomething(b); 
+0

Gutes Beispiel für den Unterschied – Karan

1

Auf der Grundlage Ihrer vorherigen Frage Class inherits generic dictionary<string, IFoo> and Interface und die Diskussion in den Antworten, ich bin zu raten, Sie fragen eher nach, als von etwas zu erben.

Implementierung von Dictionary ist in Ordnung, wenn Sie mit dem Weg Wörterbuch glücklich ist implementiert. Wenn Sie etwas ändern möchten, ist die Implementierung von IDictionary besser.

IMHO Wenn Sie ein vorhandenes Mitglied mit 'neu' abdecken wollen, dann ist es besser, die Schnittstelle zu implementieren, anstatt von der ursprünglichen Klasse zu erben.

Verwandte Themen