An den Haaren herbeigezogen, aber hoffentlich leicht zu verstehen.
Dein Programm bietet die Möglichkeit von externen Erweiterungen (wie z.B. auch der Windows Explorer). In Version 1 gibst Du lediglich die Möglichkeit das Menü zu (IMenuExtension) erweitern. In Version 2 gibst Du separat die Möglichkeit auch die Toolbars (IToolbarExtension) zu erweitern.
Wenn ein Entwickler beide Bereiche mit einer Komponente erweitern will, muss dieser beide Interfaces einbinden. Da beide Interface z.B. eine Hint Eigenschaft bieten und eine Caption-Eigenschaft bieten, müssen die beiden Methoden, obwohl gleich, zweimal eingebunden werden.
Nun machst Du es mit den neuen Möglichkeiten dem Entwickler leichter und definierst ein gesamtes Interface (IGUIExtension), welches beide Interfaces implementiert.
Der Entwickler muss jetzt nur noch das Gesamt-Interface integrieren, ohne sich daran zu erinnern (nachzulesen) welche Interfaces alle nötig sind, damit alles funktioniert
Es ist also für den Entwickler leichter, da er nur noch "ein" Interface berücksichtigen muss und für Dich, da die Support-Anrufe zurückgehen wegen schlecht beschriebener Schnittstellen. Ausserdem muss der Entwickler der Erweiterung nur noch eine Methoden-Implementierung für gleiche Aufgaben (z.B. Hint, Caption, Execute) schreiben.
...
...