Do tej pory z Value Objects korzystałem "losowo", ale chciałbym mocniej na ten element zwracać uwagę. Każdy kto stosuje VO zapewne zauważył, że są bardzo powtarzalne i pewnie kombinował jakby trochę przyspieszyć ich wytwarzanie. Dlatego też pytanie jak do tego podchodzicie - piszecie własne klasy i na ich podstawie potem budujecie konkretne VO, czy raczej korzystacie z gotowych bibliotek. Jeśli z gotowych to chętnie poznam z jakich i Waszą ich ocenę.
Podasz przykład tego co się powtarza w VO i jak chciałbyś przyspieszać ich wytwarzanie? Znasz jakieś gotowe biblioteki do wytwarzani VO?
@hadwao: A to nie jest tak, że (zakładając) mając bibliotekę do "wytwarzania" VO mijamy się z całą ideologią VO? Też nie rozumiem co znaczy "powtarzalne" - moim zdaniem, jeżeli dwa VO są powtarzalne to w 90% można zrobić z tego jeden VO z dodatkową metodą (metodami) :)
VO z metodą? (nie liczę get/set)
@axelbest: na przykład wiele VO jest stringiem z prostą walidacją typu max/min length + ewentualnie jakiś regexp. Np. uuid i firstName w gruncie rzeczy mają bardzo powtarzalną logikę. Wiele VO opartych o integer to w zasadzie znowu ograniczenie max/min value itp.
Co do bibliotek to jest sporo prostych VO - czyli np. jest klasa "string" z podstawowymi walidacjami, którą sobie po prostu rozszerzasz, ale są też np. takie z dość niestandardowym podejściem jak https://github.com/funeralzone/valueobjects
axelbest napisał(a):
VO z metodą? (nie liczę get/set)
Przykładowo - mamy VO - wysokość. Wysokość może być metrach / calach. Jak chcesz porównać DWIE takie wysokości czy są sobie równe to dodajesz metodę equal i sprawdzasz tam czy poza value jest jeszcze odpowiednia jednostka długości :)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.