我目前正在嘗試重構我的代碼後,我讀到的實現優先於擴展。目前,我正在嘗試創建一個將對象添加到場景的功能。爲了更好地確定每個對象是什麼,有多種解釋,如用於更新,渲染列表等Java「instanceof」添加多個列表
private List<Updatable> updatables;
private List<Removable> removables;
private List<Renderable> renderables;
private List<Collidable> collidables;
我想打一個函數到我的Scene類,像這樣:
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) –