Mehrfache Vererbung: Was ist ein gutes Beispiel?
Ich versuche zu finden, ein gutes Beispiel für die Verwendung von Mehrfachvererbung, was nicht getan werden kann mit normalen Schnittstellen.
Ich denke, es ist ziemlich schwer zu finden ein Beispiel, welches nicht modelliert werden in einer anderen Art und Weise.
Edit: ich meine, kann jemand nenne mir einen guten real-world Beispiel, wenn Sie verwenden MÜSSEN, um Mehrfachvererbung zu implementieren, diesem Beispiel so sauber wie möglich. Und sollte es nicht machen Verwendung von mehreren Schnittstellen, die gerade die Weise, die Sie Erben können mehrere Klassen in C++.
InformationsquelleAutor der Frage Philipp Spiess | 2012-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende ist ein Klassiker:
Quelle: wiki.
InformationsquelleAutor der Antwort Luchian Grigore
Ein Beispiel, wo mehrere class-Vererbung Sinn macht, ist das Observer-Muster. Dieses Muster beschreibt zwei Akteure, die Beobachter und die zu beobachtende, und die ehemaligen möchte benachrichtigt werden, wenn dieser änderungen seiner Objektes.
Einer vereinfachten version für die Benachrichtigung der Kunden Aussehen kann, wie dies in C#:
Dies ist im Grunde der Kern der Logik, die Sie benötigen, um benachrichtigt alle registrierten Beobachter. Sie könnte jede Klasse observable durch Ableitung von dieser Klasse, aber als C# unterstützt nur eine einzige Klasse, Vererbung, Sie sind begrenzt, nicht abgeleitet von einer anderen Klasse. So etwas würde nicht funktionieren:
In diesen Fällen oft zu replizieren, den code, die Unterklassen beobachtbar in allen von Ihnen, im Grunde, die gegen die "Wiederhole Dich nicht" und der Single Point of Truth " - Prinzipien (wenn Sie MVVM in C#, darüber nachzudenken: wie Häufig haben Sie in Umsetzung der
INotifyPropertyChanged
- Schnittstelle?). Eine Lösung mit mehreren Klasse-Vererbung wäre viel sauberer meiner Meinung nach. In C++ würde obiges Beispiel kompilieren einwandfrei.Onkel Bob schrieb einen interessanten Artikel über diesesdas ist, wo ich dem Beispiel aus. Aber dieses problem oft gilt für alle Schnittstellen, die *fähig sind (z.B. vergleichbar, gleichsetzbar, enumerable, usw.): eine multiple Vererbung version ist oft sauberer in diesen Fällen, wie bereits von Bertrand Meyer in seinem Buch "Object-Oriented Software Construction".
InformationsquelleAutor der Antwort feO2x