Czy pomiędzy kontrolerem A oraz B zachodzi relacja "is a"?
Czy dziedziczenie jest zgodne z zasadą podstawienia Liskov?
Domyślam się, że raczej nie (nie znam kontekstu, ale dla kontrolerów
zwykle tak bywa), zatem dziedziczenie jest błędem w designie klas.
Typowy błąd polega na jego zastosowaniu do "wyciągnięcia przed nawias"
kodu. Do tego służy agregacja, dziedziczenie natomiast służy do
wspomagania polimorfizmu.
Tak więc gdyby usunąć dziedziczenie z designu klas to możemy dać
spokój Springowi...
...odpowiedź pewnie nie jest satysfakcjonująca:P
z poważaniem
Sławek Sobótka
http://art-of-software.blogspot.com/
http://ssepp.pl
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com
By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
Więcej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl
W takim wypadku mielibyśmy "polimorficzny" (w cudzysłowu) dostęp z
widoku do kontrolera.
Oczywiście można podejść inaczej, niejako "piętro niżej" i zrobić
jeden konkretny kontroler, który deleguje obsługę specyficznych żądań
do agregatowanych handlerów (wzorzec strategii).
A ja odpowiem dokładnie na pytania zadane przez autora. :)
> INFO: Mapped URL path [/foo/.*] onto handler 'Controller_A'
> INFO: Mapped URL path [/bar/test.*] onto handler 'Controller_B'
> INFO: Mapped URL path [/bar/foo.*] onto handler 'Controller_B' <--
> Dlaczego?
Kontroler B ma po prostu akcje "foo" i "bar" za sprawą dziedziczenia.
Dlaczegoż część akcji nie miałaby być widoczna? Wszystkie są publiczne i
zaadnotowane, więc Web MVC robi to, o co go prosimy - mapuje urle
na metody. :)
> Czy mozna sprawic, ze sciezki URL nie beda dziedziczone w
> Controller_B?
Ja nie widziałem... I pewnie nie ma, bo takie zachowanie byłoby
nieoczywiste, dziwne i redundantne (można przecież zamienić
dziedziczenie na delegację lub ewentualnie na klasę abstrakcyjną,
którą rozszerzą A i B).
--
Damian Nowak
www.nowaker.net