Dlaczego tak
Metoda generuj() w klasie bazowej ustala stały szkielet algorytmu — najpierw nagłówek, potem treść — i jest oznaczona final, aby podklasy nie mogły go zmienić. Podklasy dostarczają tylko wybrane kroki, tu abstrakcyjną metodę tresc(), więc wywołanie new RaportCsv().generuj() zwraca „R:a;b”. Kompozyt służy do budowy drzew obiektów traktowanych jednakowo jak pojedyncze elementy, a Fasada ukrywa złożony podsystem za prostym interfejsem.