Wpis z mikrobloga

Hej Mirki z #programowanie pytanie z wzorców projektowych, zastanawiam się nad kontrola/walidacją żądania w moim serwisie. Żądanie nim zostanie obsłużone musi przejść kilka kroków walidacji idąc z duchem czasu i wytycznymi wujka Boba chcę każdą kontrolę zapisać w osobnej klasie. Plusem łatwość ewentualnego dodania nowej kontroli.

Zastanawiam się jaki wzorzec wybrać, myślę nad obserwatorem i łatwo się go implementuje wydaje się, że można go zastosować i odpowiedni Obserwator wyrzuci wyjątkiem jak mu się coś nie spodoba. A może Iterator który niewiele się różni od Obserwatora.

Widzę, że też może być Łańcuch zobowiązań gdzie pozytywne przejście jednego etapu kontroli pozwala na przejście do kolejnej kontroli. Ale w kodzie może to wyglądać nieco na zaciemnione.

A może polecicie jakieś inne rozwiązanie?
  • 4
  • Odpowiedz
@JacobTheLiar: na wstępie zaznaczę, że nienawidzę teoretycznych rozważań nad tworzeniem kodu :D
walidację requestów widzę tak:

def validate(request):
blebleble

a to oznacza, że w sumie możesz mieć funkcje, która to zrobi. OFC jest to inne spojrzenie z duchem czegoś takiego: stop making classes

Zakładając, że masz chaina warunków do obskoczenia można to zrobić tak:

def validate1(request):
blebleble
def validate2(request):
blebleble

validate(f, request):
for i in f:
f(request)

validate([validate1, validate2], {"dupa": "cycki"})
  • Odpowiedz
@object: Dzięki za odpowiedź. Napisałem taką bzdurę ponieważ w implementacji do mojego problemu niewiele się będzie różnić.

wg mojej oceny do tego do czego bym użył Obserwatora, Publisher iterował by po liście validatorów(subskrybentach),

Iterator poleciałby po elementach kolekcji czyli validatorów tylko troszkę inaczej podchodzi do tematu znajdywania elementów validatora i wywoływania metody sprawdzania, stąd moje porównanie może naiwne ale wygląda zgoła podobnie. Nawet Publisher może być swego rodzaju Iteratorem bo iteruje
  • Odpowiedz