Uniknąć rzutowania

0

Powiedzmy, że mam interfejs ŹródłoFigur i różne jego implementacje, np. ŹródłoTrójkątów i ŹródłoKwadratów.
Implementacje te dostarczają obiekty typu Trójkąt i Kwadrat, implementujące interfejs Figura.
Każdą Figurę można narysować wywołując Figura.rysuj(), oczywiście implementacja rysowania trójkątów jest inna niż kwadratów czy innych figur.

Jednak nie jestem zadowolony z tego rozwiązania, ponieważ Trójkąt czy Kwadrat to b. proste obiekty, których w systemie może być tysiące i nie powinny odpowiadać za rysowanie.

Od razu nasunęło mi się takie rozwiązanie: Stworzyć interfejs Rysownik z metodą rysuj(Figura), oraz implementujące go klasy RysownikTrójkątów, RysownikKwadratów itd.
Problem w tym, że przy takim podejściu potrzebne jest rzutowanie.

ŹródłoFigur zrodlo = new ŹródłoTrójkątów();
Rysownik rysownik = zrodlo.pobierzRysownika();  //obiekt typu RysownikTrójkątów

List<Figura> figury = zrodlo.pobierzFigury();

Figura figura1=figury.get(0);

rysownik.rysuj(figura1);

Jak widać RysownikTrójkątów musiałby zrzutować sobie obiekt typu Figura na Trójkąt.

Czy mogę w jakiś sposób uniknąć tego rzutowania, jednocześnie zachowując prostotę klas reprezentujących figury?
Jeśli nie, to jak oceniacie moje rozwiązanie?

Z góry dzięki za pomoc!

0

Może zamiast operować przez intefejs Figura, użyj Type Bounds (jak to się na polski tłumaczy? )

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