В настоящее время я пытаюсь реорганизовать свой код после того, как прочитал, что реализация предпочтительнее расширений. В настоящее время я пытаюсь создать функцию, которая добавляет объект в сцену. Для того, чтобы лучше определить, что каждый объект, есть несколько списков, таких как список для обновления, визуализации и т.д.Java "instanceof", чтобы добавить несколько списков
private List<Updatable> updatables;
private List<Removable> removables;
private List<Renderable> renderables;
private List<Collidable> collidables;
Я хочу сделать функцию в моем классе сцены, как так:
public void add(Object o) {
if(o instanceof Updatable)
updatables.add((Updatable) o);
if(o instanceof Removable)
removables.add((Removable) o);
if(o instanceof Renderable)
renderables.add((Renderable) o);
if(o instanceof Collidable)
collidables.add((Collidable) o);
}
Аналогичным образом я бы создал аналогичную функцию удаления. Мой вопрос в том, что это плохая практика кодирования, поскольку я слышал о подводных камнях instanceof, а во-вторых, если это так, есть ли способ об этом/реструктурировать мой код, чтобы упростить добавление экземпляров? Я предпочитаю не добавлять экземпляр в каждый список и определять, к какому из них он относится каждый раз.
Много подобных вопросов по этому вопросу. [Например] (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=site:stackoverflow.com+java+instanceof+code+smell) –