Hierarchien mit Interfaces und Abstract Classes

21/07/2009 - 09:58 von Stefan Hoffmann | Report spam
hi @ll,

Folgende Überlegung: Alle mein Klassen haben gemeinsame Methoden, z.B.

public interface IAllClasses { void Foo(); }


Diese Methoden sind generische (ggf. sogar static).

public abstract BassAllClasses { public void Foo(); }


Nun meine konkreten Klassen:

public interface IMyClass1 : IAllClasses {}


und selbige implementiert

public class MyClass1 : BaseAllClasses, IMyClass1 {}


Gibt es Gründe das Interface IMyClass1 nicht von IAllClasses abzuleiten?
Oder ist das so der Weisheit letzter Schluß?


mfG
 

Lesen sie die antworten

#1 Alexander Mueller
21/07/2009 - 13:20 | Warnen spam
Stefan Hoffmann schrieb:
hi @ll,

Folgende Überlegung: Alle mein Klassen haben gemeinsame Methoden, z.B.

public interface IAllClasses { void Foo(); }


Diese Methoden sind generische (ggf. sogar static).

public abstract BassAllClasses { public void Foo(); }



Statische Member kann man aber nebenbei bemerkt NIE ableiten.

Nun meine konkreten Klassen:

public interface IMyClass1 : IAllClasses {}


und selbige implementiert

public class MyClass1 : BaseAllClasses, IMyClass1 {}


Gibt es Gründe das Interface IMyClass1 nicht von IAllClasses abzuleiten?
Oder ist das so der Weisheit letzter Schluß?



Wenn IMyClass1 dem Wesen nach ein IAllClasses IST, dann ist es
sinnvoll, es abzuleiten, zumal dann und nur dann,
jedes IMyClass nach IAllClasses gecastet werden kann.

Kommt mir subjektiv gesehen ein bisschen overdosed vor, beides
zu definieren, eine abstrakte Klasse, und ein Interface, die die
dasselbe Set an Members haben.
In solchen Fàllen würde ich pragmatischer Weise nur die abstrakte Klasse
definieren. Kann bei vielschichtiger Architektur allerdings eine
Notwendigkeit sein, dass nur Interfaces zwischen den
Assemblies/Komponenten ausgetauscht werden,
dann macht es wieder Sinn.


MfG,
Alex

Ähnliche fragen