wzorzec wizytator (odwiedzający) w PHP

0

Szybkie pytanie - czy ktoś może rzucić okiem na kod?
https://github.com/ccwrc/design_patterns_practice/tree/master/Visitor

Nie wiem, czy do końca 'czuję' ten wzorzec. Wizytujący może zrobić dowolne kuku odwiedzanemu?

Wszelka krytyka/podpowiedź mile widziana.

0

Jaki problem rozwiązał Ci tu Visitor?

Swoją drogą podoba mi się to, że Rosja odwiedza Ukrainę i zmniejsza jej terytorium :D

0

Może, żeby się nie powtarzać, to podrzucę Ci dwa linki:

0

@Desu:

Sumując, bo nadal nie jestem pewien. Wizytator jedyne co może zrobić to korzystać z publicznych metod i właściwości wizytowanego, ale (rozczarowanie) nie ma i mieć nie będzie dostępu do właściwości i metod prywatnych.
Miałem taką cichą nadzieję na złamanie enkapsulacji.

1

Dokładnie tak. Na szczęście nie ma takich czarów.

1

A do odwiedzającego przypadkiem nie trzeba mieć method overloading? Trochę ciężkie w PHP

0
ccwrc napisał(a):

@TomRiddle Nie wiem. Trzeba? Jutro będę miał czas żeby zerknąć, jeśli masz jeszcze jakieś uwagi/podpowiedzi to poproszę

No, na upartego nie trzeba, bo możesz zrobić różne metody, ale wtedy trudno nazwać to Visitorem.

W Javie (i w ogóle w silnie typowanych językach) metody call(1) oraz call(1, 2) to są różne metody (mają inne sygnatury). W PHP (i innych niektórych słabo typowanych językach) sygnatura nie jest częścią metody, np takie metody call(1) oraz call(1, 2) to jedna i ta sama metoda [$this, 'call'] (w PHP) oraz po prostu call (np w JavaScript).

Visitor polega na tym że implementacje ustalane w Runtime'ie wywołują tą samą metodę z różnymi sygnaturami. Jak widzisz, w dynamicznie typowanych językach trochę to mija się z celem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1