Ich habe das Beispiel, das in der unteren Abbildung gezeigt wird, analog zu einem realen Projekt gemacht, an dem ich arbeite. Ich implementiere dieses Projekt in C++.Vermeiden Sie Klassenexposition, während Sie eine Schnittstelle erhalten
Der Hauptpunkt dieses Beispiels ist, dass ich eine FruitGarden
von denen ich weiß, dass es immer eine einzige AppleTree
enthält. In FruitGarden
's Funktion StartHarvesting
sollte überprüft werden, ob der AppleTree
reif für die Ernte ist. Zu diesem Zweck habe ich eine Interface-Klasse erstellt.
Die Art, wie ich die Schnittstelle jetzt benutze, ist, indem ich eine Funktion GetTreePointer
in Vegitation
implementiere und sie auf eine IFoodTree
umwandle (und auf NULL überprüfe). Das Problem, das ich darin sehe, ist, dass ich meinen gesamten Baum der Außenwelt aussetze (indem ich die GetTreePointer
implementiere), die den Aufruf anderer öffentlicher Funktionen ermöglicht, die nicht außerhalb von Vegitation
verwendet werden sollen.
Meine Hauptfrage ist: Was ist der beste Weg, um die Schnittstelle IFoodTree
, die auf die AppleTree
zeigt?
Editiert, um es lesbarer zu machen, aber da ich die UML nicht aktualisieren kann, habe ich die "Vegitation" (=> Vegetation) verlassen. – MSalters