W naszej aplikacji Rails dodajemy powiadomienia. Niektóre z nich to blocking
: Zatrzymują postęp dodawanego zasobu, ponieważ brakuje niektórych informacji o tym zasobie.
Inne powiadomienia są prostymi powiadomieniami i zawierają jedynie informacje.
Dzisiaj rozmawiałem z innym programistą w naszym zespole. Utworzyłem następującą strukturę dziedziczenia:
Wolałby jednak, abym po prostu dodał blocking
jako metodę zwracającą wartość logiczną w każdym powiadomieniu i określił listę podklas, które blokują wewnątrz nadrzędnej klasy Powiadomienia.
Różnica między tymi podejściami nie jest bardzo duża; w moim podejściu nie trzeba określać tej listy, utrzymując klasę root czystszą. Z drugiej strony, specjalna logika, która dzieje się Notification::Blocking
teraz, również nie jest bardzo duża.
Jaka abstrakcja jest bardziej odpowiednia dla tego problemu?