und jetzt hier ist ein Besucher, den ich gemacht habe:
%Vor%Warum ist das besser, als nur öffentliche Songs zu veröffentlichen und dann jede Art von Klasse damit machen zu lassen, was sie will?
Dieses Beispiel kommt von diesem Beitrag .
Dies liegt hauptsächlich daran, dass das Beispiel ein schlechtes Beispiel für das Besuchermuster ist. Der Zweck des Besuchermusters besteht darin, einer Gruppe von Objekten allgemeine Funktionen hinzuzufügen, ohne von derselben Klasse abgeleitet werden zu müssen. Damit können Sie den Klassen weiterhin Funktionalität hinzufügen, ohne die Klassen selbst ändern zu müssen. Das längere Fruchtbeispiel in der Antwort, die Sie zitiert haben, ist eine bessere Erklärung für das Besuchermuster.
Lesen Sie den zitierten Wikipedia-Artikel, damit sich der Besucher auszahlen kann, sollten Sie eine Gruppe von Klassen haben. In Ihrem Fall sind verschiedene Klassen nicht wirklich gerechtfertigt, so dass das Besuchermuster nicht benötigt wird. Bei einer heterogeneren Klassenstruktur könnte das Besuchermuster nützlich werden.
Meiner Meinung nach hat die Nützlichkeit dieses Patterns mit der Implementierung von MusicLibrary zu tun. Wie oben in seiner einfachsten Form gezeigt, reicht es nur, die Liste der Songs in die Visitor.Visit-Methode zu übertragen. In einer komplexeren Anwendung ist möglicherweise keine speicherinterne Liste verfügbar. Sie muss beispielsweise die Bibliotheken verschiedener Maschinen durchsuchen, um die Liste zu erstellen. Mein Punkt - wie schlecht auch immer - besteht darin, dass mit zunehmender Komplexität der Iteration von Songs diese Logik zentral in der MusicLibrary gehalten werden kann und IMusicVisitor-Objekte sich nur mit Sammlungen von Songs befassen können.
Tags und Links c# design-patterns oop