Interfaces beschreiben das Verhalten sowie die Interaktion der einzelnen Subsysteme bzw. Teilen davon. Klassen implementieren dieses Verhalten.
Das ist ein gravierender Unterschied, und ich würde bei komplexen Systemen immer erst die Schnittstellen definieren und später dann das Verhalten.
Alleine schon Konstrukte wie:
Delphi-Quellcode:
Type
TCombinedClass = Class (TSomeBaseClass, IListener, IRemover, IPad, IPod)
zeigen, wie klarer ich Systeme entwerfen kann. Denn ich beschreibe das Verhalten der einzelnen Interfaces (IListener, IRemover....) separat und kann dieses Verhalten dann meinen Klassen zuweisen.
Das geht alleine mit Klassen nicht.