T.....n
T.....n
#programowanie #cpp
https://refactoring.guru/pl/design-patterns/chain-of-responsibility/cpp/example
Dlaczego w tym przykładzie tworzy się jakąś klasę wirtulną Handler, zamiast ją w---------ć i oprzeć wszystko na klasie AbstractHadler?
0
  • Najlepsze
  • Wszystkie komentarze
SmacznyPies
@TheMoonTheMoon: moja ulubiona paranoja z oop, czyli nasrajmy tyle warstw abstrakcyjnych, żeby w przyszłości nie mieć problemów z podstawianiem do "zbyt szczegółowych interfejsów".
2
lionbest
@TheMoonTheMoon: Bo ta pierwsza klasa Handler to tak naprawdę tylko interfejs, mimo że C++ ich nie ma. Jak komuś się ubzduram, że muszą być, to robi klasę abstrakcyjną z samymi metodami czysto wirtualnymi.
Generalnie, jest to bzdura nieistotnie pogarszająca wydajność, więc nikt się tym nie przejmuje.
Ze względu na wydajność coraz więcej się robi statycznym polimorfizmem, więc i szablonami, tym bardziej taki kod po prostu wygląda staro.
1
Saly
@TheMoonTheMoon: w przypadkach gdy chcę zaimplementować interfejs Handler jednocześnie nie chcąc trzymać pola next_hander
0
Jurix
Jurix
@TheMoonTheMoon: Nie wiem jak w cpp, ale wydaje mi się że chodzi tu o stworzenie intefejsu który jest implementowany przez każdy handler w chainie. Niby abstract zawiera ten interfejs, jednak z reguły typuje się po interfejsach nie po abstrakach.
0
Passer93
@TheMoonTheMoon: zobaczyłem "new" i "delete" i mnie odrzuciło
0