Как вы могли бы вызвать метод из всех экземпляров класса?

Я пишу базовый движок игры и имею абстрактный класс, который представляет любой объект, который можно рисовать в 3D-мире, однако внутри этого класса есть абстрактный метод Render (), который я бы назвал автоматически движком на каждой стадии рисования. Как я мог реализовать это, чтобы каждый класс, простирающийся от моего абстрактного класса, автоматически вызывал Render ()?

Я использую java, android sdk 2.2 и opengl es.

Вы можете зарегистрировать каждый объект, который может быть передан классу, который будет вызывать render () для всех ваших объектов.

Например :

public class Registry{ private static Collection<RenderedObject> register = new ArrayList<RenderedObject>(); public static void add(RenderedObject obj){ register.add(obj); } public static void renderAll(){ for(RenderedObject obj : register){ obj.render(); } } } 

И вы можете зарегистрировать свои объекты в реестре в конструкторе вашего RenderedObject.

Вы можете создать прокси-сервер своего движка:

 public class RenderingEngine implements Engine { private Engine originalEngine; private Collection<AbstractRender3DObject> items; public RenderingEngine(Engine originalEngine) { // assing } public void draw() { originalEngine.draw(); invokeRender(); } private void invokeRender() { for (AbstractRenderItem item : items) { item.render(); } } public void register(Object3D item) { if (item instanceof AbstractRender3DObject) { items.add(item); } super.register(item); } } 

Я не знаю, какую структуру вы используете, поэтому я принял некоторые имена методов и интерфейсов. Но идея такая же, как и выше.

Ведите список всех объектов, проведите через него и вызовите метод.