Per molto tempo ho cercato di mettere la mia testa attorno allo schema dei visitatori, e in qualche modo questa cosa continua a essere piuttosto confusa per me.
Attualmente sono sotto l'impressione che sia utile solo applicare le operazioni sugli oggetti che implementano il pattern Composite. Almeno per quanto riguarda PHP. È un'osservazione accurata o mi manca qualcosa?
Sono in procinto di reimplementare alcune funzionalità, e questo include il calcolo di una diff tra due Entità. Queste Entità contengono vari oggetti valore. Derivati diversi nella gerarchia di tipi di queste Entità hanno oggetti di valore diversi. Originariamente il codice diff era contenuto nelle entità stesse, anche se questo ha causato un po 'di confusione, quindi preferirei spostarlo in oggetti di servizio dedicati. Mi è venuta in mente la trama del visitatore, anche se non vedo come possa applicarla in modo sano. Tutti gli oggetti valore devono implementare un'interfaccia EntityElement? Sembra male. È un caso in cui il pattern Visitor non si applica, o semplicemente non riesco a vedere come sarebbe applicato correttamente qui?