Piszę sobię amatorską grę, język nie jest istotny (java, fyi).
Mam około 30 klas postaci (polimorifczne, implementują interface Actor). Actor ma metode getRenderer(), która zwraca polimorficzny renderer (po jednym dla każdej klasy) implementujący interface ActorRenderer. Niektóre postaci zawsze mają być nad innymi. Na razie wszystko trzymam w List<Actor>. Kolejność dodania postaci do tej listy jest niedeterministyczna i zależy od przebiegu gry. Jedyny pomysł jaki mam to dodać do ActorRenderer metodę getOrder(), a potem:
List<Actor> actors;
actors.stream()
.map(Actor::getActorRenderer)
.sorted(comparing(ActorRenderer::getOrder)
.forEach(renderer -> renderer.render(canvas));
Ale niewydaje mi się to sensowne przez to że będę musiał pamiętać o tych intach pochowanych w róznych implementacjach.
Any ideas?