![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Piszę aplikacje obiektowych formularzy i natknąłem się na mały problem. OF moga miec klasy Rule które walidują pola formularza i pluginy które wykonują na nich operacje np md5 na polu po stronie klienta.
Na początku chciałem zrobic te dwie rzeczy oddzielnie ale pomyslałem sobie, że zastosuje takie samo API dla Rules i Pluginów i zrobie to za pomocą dekoratora np Co Wy o tym myslicie? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Ja też ostatnio miałem taki problem. Postanowiłem połączyć mapper z Rules Api i tak oto powstał jakiś dziwny stwór który dzięki Bogu działa
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Do mnie nie przemawia łączenie reguł z pluginami. Reguły służą do sprawdzenia poprawności danych, a pluginy mają na tych danych operować. Poza tym dekorator nie jest najlepszym wyjściem w tym przypadku, jeżeli już musisz tak zrobić. Wzorzec ma to do siebie, że nie zapewnia odpowiedniej kolejności wykonania. Więc możesz przez przypadek złe dane hashować. Ja bym to osobiście rozłączył w jakiś sposób.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wzorzec ma to do siebie, że nie zapewnia odpowiedniej kolejności wykonania. Wszystko zależy do tego w jakiej kolejności utworzy się instancje (patrz kod wyżej). Poza tym może zajśc potrzeba kiedy najpierw należy jakies dane "zoperowac" a dopiero potem je zwalidowac. W przypadku rozdzielenia nie da się tego zrobic. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wszystko zależy do tego w jakiej kolejności utworzy się instancje (patrz kod wyżej). To nie jest do końca prawdą. Nie mówię o wywołaniu metod, tylko wykonaniu czynności filtrów, a to jest duża różnica. Oto prosty przykład.
Niestety dekorator wymaga trzymania porządku w kodzie i pozwala na takie przekłamania... Ten post edytował Ludvik 4.02.2006, 15:07:08 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:41 |