這可能是一個非常新鮮的問題,但我有一個名爲Scene的類,它有一個名爲Layer的類的數組。每個層是等的接口層或遊戲畫面層和場景調用更新層等的&繪製函數..應該場景刪除層或層自己刪除?
我的問題是增加或移除這些層時,它應該是 scene.addLayer(層); 或 layer.addToScene(scene); ?
這兩個看起來都很好,但是在OOP中是否有任何規則?
這可能是一個非常新鮮的問題,但我有一個名爲Scene的類,它有一個名爲Layer的類的數組。每個層是等的接口層或遊戲畫面層和場景調用更新層等的&繪製函數..應該場景刪除層或層自己刪除?
我的問題是增加或移除這些層時,它應該是 scene.addLayer(層); 或 layer.addToScene(scene); ?
這兩個看起來都很好,但是在OOP中是否有任何規則?
這不是一個問題而是我想你想的意見了......
我不知道有任何OOP規則阻止任何人,但我覺得scene.addLayer(layer)
將是最好的,因爲它最有意義。假設你有一個罐子,你把硬幣放入。你會說coin.addToJar
? 沒有,它沒有任何意義!硬幣不會放入罐子裏!你必須告訴罐子接受硬幣。即使使用Java GUI,您也有Container.add(Component)
。
(PS這個問題並不一定是在Java標籤,它可以適用於任何面向對象的語言。)
這很有道理。想想看,ActionScript還使用container.addChild()來添加顯示對象來顯示容器。 – Elonoa 2013-03-11 19:44:30
我不得不說,@Java寫了一個可愛的回答,我會爲您提供另一種觀點。如果你的圖層將被刪除,當它擁有它們的場景被刪除時,我會去Scene.AddLayer(Layer)
,因爲它給了場景一些圖層上的所有權語義。另一方面,如果這些圖層將由不同的場景共享,我將以Layer.AddToScene(Scene)
出於相反的原因。當然,這只是一種個人風格,並不基於任何軟件工程原理。
感謝您的洞察力。最初我在做Scene.addLayer,但不確定我是否做錯了什麼。 – Elonoa 2013-03-11 19:48:00
@Elonoa,很高興我能幫到你。 – 2013-03-11 20:44:27
我不確定你的問題與使用Java編程語言進行編程有什麼關係。爲什麼[tag:java]標籤? – 2013-03-09 23:54:34
我對ActionScript沒有太多瞭解,但是在回顧tagover上的標籤使用時,[tag:actionscript]標籤經常與[tag:javascript]標籤一起使用,幾乎從不使用[tag:java]標籤。我敢打賭,你打算使用[tag:javascript]標籤,但我不太瞭解這方面的信息,以這種方式自信地編輯你的問題。如果我是正確的,你會想編輯你的標籤,以便讓正確的人看到你的問題。 – 2013-03-10 00:02:09
我使用幾種語言,包括java,但不知道在這種情況下我應該放什麼標籤,因爲這是所有OOP語言的一般問題。 – Elonoa 2013-03-11 19:46:11