Walidator - jak go zrobić (wzorce, architekura)

0

cześć
mam problem - chcę napisac walidator (c++, ale to nieważne), który sprawdza

  1. cechę elementu w odniesieniu do innych cech (jak ktos wybierze/zmieni określony typ to trzeba sprawdzić materiał, czy dany typ pasuje do materiału)
  2. cechę elementu w odniesieniu do właściwości "zewnetrznych" (np czy coś nie jest za wysokie, szerokie etc)
  3. cechy elementu (różne) w odniesieniu do innych elementów - (czyli w jak ładujemy cos do paczek, to żeby te paczki były jednorodne [wymiar, ciężar, maetriał itd])
  4. czasami zmiana jednej cechy wymaga sprawdzenia zmienianego parametru, czasami jest to grupa parametrów (np zmieniam typ. to sprawdzam czy wybrałem poprawny typ, ale musze tez sprawdzić materiał) a jak zmieniam/dodaję jakąś labelkę/oznaczenie to sprawdzam tylko czy mogę to oznaczenie nadać temu elementowi

walidator ma być modułem zewnętrzym - więc klasa sama w sobie nie może mieć w sobie walidatora

zastanawiałem się jak go ładnie zrobić
i wyszło mi na to, ze najlepszy byłby wzorzecz projektowy strategia i w zalezności co będzie sprawdzane, to taką stategię zastosuję, połączony z fabryką, która by tworzyła walidatory, potrzebne do sprawdzania
myślałem tez o dekoratorze, który by "dekorował" jakiegoś bazowego walidatora odpowiednimi walidatokami(sprawdzaczami) w zależności od potrzeb walidacyjnych

co o tym sądzicie?
który pomysł lepszy?

jak miałby ktoś inny pomysł, albo spostrzezenia to z chęcia posłucham

0

Jestem ciekaw dyskusji, też często się męczę z tym zagadnieniem, strategia robi się szybko nieczytelna, nie próbowałem dekoratora, a tutaj jest jeszcze jeden ciekawy koncept na enumach: https://dzone.com/articles/validations-using-enum

0

Może sprawdź sobie jak zrobiony jest

https://github.com/JeremySkinner/FluentValidation

Brzmi w sumie jak to czego potrzebujesz. Co prawda to biblioteka dla .Net, ale kod jest na githubie.

1

Jeśli masz potencjalnie dowolną kombinację tych czterech opisanych przez Ciebie walidacji, to raczej dekorator niż strategia, bo dekoratorami zbudujesz sobie właśnie dowolną potrzebną Ci kombinację, a strategie musiałbyś napisać wszystkie możliwe od razu.
Ale strategie i tak mogą Ci się przydać, w celu implementacji różnych algorytmów sprawdzania jednej z cech. (Np. jedna strategia do weryfikacji wymiarów podanych w metrach, inna do wymiarów w calach.)

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