Ich finde, für das Observer Pattern eignet sich hervorragend die Benutzung eines Multicast Events.
In dem gezeigten Beispiel sieht man ja sehr schön, dass der Kontrakt eigentlich nur die GetNewspaper Methode ist.
Das ganze geht ein bisschen in Richtung
EBCs, was für Delphianer ja im Grunde nix sonderlich Neues ist.
Der Vorteil dabei ist, dass keine Abhängigkeit auf ein Interface gegeben ist (sieht man in meinem angehangenen Beispiel) - da der Kontrakt ja nur besagt "ich brauche eine GetNewspaper Methode". Wer die wie oder wo implementiert, ist uninteressant.
Auch der Publisher braucht kein spezielles Interface Implementieren, denn das Multicast Event ist im Grunde nix anderes als das Observer Pattern, was über
Komposition an Stelle von Vererbung realisiert ist.
Ob man nun zu DSharp greift oder es auf dem herkömmlichen Weg löst, bleibt einem selber überlassen - habe mal beide Wege gezeigt.