Java - grafika 2D, różne obiekty rysują

0

Witam,
piszę prosty edytor grafiki. W skrócie wygląda to tak:

Mam klasę Area (dziedziczącą po JPanel), w której znajduje się metoda paint(), w której rysuję różne figury.

Wszystkie dane o figurach są przechowywane w ArrayList.

Każda figura jest reprezentowana przez swoją klasę, ale wszystkie dziedziczą po jednej wspólnej o nazwie AbstractObject.
W metodzie paint() znajduje się pętla, która przejeżdża po wszystkich elementach kolekcji i rysuje je.
Jednak, każdy rodzaj figury rysuje się w inny sposób: inaczej kwadraty, inaczej linie, a jeszcze inaczej koła.

Teraz mam zaimplementowaną obsługę tylko dwóch figur: kwadraty i linie proste. Implementację rozwiązałem w taki sposób, że w pętli znajduje się if, który sprawdza z jaką figurą mamy do czynienia i odpowiednimi funkcjami ją rysuje.

Jednak w przyszłości drzewko z if'ów bardzo by się rozrosło, dlatego chciałbym w każdej z klas reprezentujących daną figurę utworzyć metodę, której wywołanie rysowałoby odpowiednią rzecz.

I tu pojawiają się pytania: jak to zrobić? Jak przemieszczać dane graficzne między obiektami?

Pozdrawiam :)

1

Wzorzec projektowy Composite. Każda figura powinna być odpowiedzialna za malowanie samej siebie na przekazanym obiekcie Graphics. Metoda malująca powinna pochodzić z klasy abstrakcyjnej i być odpowiednio zaimplementowana w kazdej klasie pochodnej. W efekcie będziesz miał

Graphics g = getGraphics();
for(AbstractObject obj : objects){
  obj.paintYourself(g);
}

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