Visitor Pattern VS Iterator Pattern: Besuch über Hierarchieklassen hinweg?
Ich untersuche die Vorteile des Besuchermusters und zitiereDesignmuste:
Aber ein Iterator kann nicht über Objektstrukturen mit verschiedenen Arten von Elementen funktionieren. Beispielsweise kann die auf Seite 295 definierte Iterator-Schnittstelle nur auf Objekte vom Typ Item: @ zugreife
template <class Item>
clas Iterator { // ... Item CurrentItem() const; };
Dies impliziert, dass alle Elemente, die der Iterator besuchen kann, ein gemeinsames Element der Elternklasse haben. Besucher hat diese Einschränkung nicht ...
class Visitor {
public:
// ...
void VisitMyType(MyType*);
void VisitYourType(YourType*);
};
MyType und YourType müssen überhaupt nicht vererbt werden.
Ich stimme diesem Zitat zu, aber ich kann kein Beispiel finden, in dem das Besuchermuster eine Struktur untersuchen könnte (wie einList
) wenn darin gesammelte Objekte nicht durch eine Superklasse verknüpft sind.
In anderen Worten, können Sie mir ein Beispiel zeigen, in dem die oben genannten Merkmale zutreffen?