2013-03-09 92 views
0

这可能是一个非常新鲜的问题,但我有一个名为Scene的类,它有一个名为Layer的类的数组。每个层是等的接口层或游戏画面层和场景调用更新层等的&绘制函数..应该场景删除层或层自己删除?

我的问题是增加或移除这些层时,它应该是 scene.addLayer(层);layer.addToScene(scene);

这两个看起来都很好,但是在OOP中是否有任何规则?

+1

我不确定你的问题与使用Java编程语言进行编程有什么关系。为什么[tag:java]标签? – 2013-03-09 23:54:34

+1

我对ActionScript没有太多了解,但是在回顾tagover上的标签使用时,[tag:actionscript]标签经常与[tag:javascript]标签一起使用,几乎从不使用[tag:java]标签。我敢打赌,你打算使用[tag:javascript]标签,但我不太了解这方面的信息,以这种方式自信地编辑你的问题。如果我是正确的,你会想编辑你的标签,以便让正确的人看到你的问题。 – 2013-03-10 00:02:09

+0

我使用几种语言,包括java,但不知道在这种情况下我应该放什么标签,因为这是所有OOP语言的一般问题。 – Elonoa 2013-03-11 19:46:11

回答

1

这不是一个问题而是我想你想的意见了......

我不知道有任何OOP规则阻止任何人,但我觉得scene.addLayer(layer)将是最好的,因为它最有意义。假设你有一个罐子,你把硬币放入。你会说coin.addToJar没有,它没有任何意义!硬币不会放入罐子里!你必须告诉罐子接受硬币。即使使用Java GUI,您也有Container.add(Component)

(PS这个问题并不一定是在Java标签,它可以适用于任何面向对象的语言。)

+0

这很有道理。想想看,ActionScript还使用container.addChild()来添加显示对象来显示容器。 – Elonoa 2013-03-11 19:44:30

1

我不得不说,@Java写了一个可爱的回答,我会为您提供另一种观点。如果你的图层将被删除,当它拥有它们的场景被删除时,我会去Scene.AddLayer(Layer),因为它给了场景一些图层上的所有权语义。另一方面,如果这些图层将由不同的场景共享,我将以Layer.AddToScene(Scene)出于相反的原因。当然,这只是一种个人风格,并不基于任何软件工程原理。

+0

感谢您的洞察力。最初我在做Scene.addLayer,但不确定我是否做错了什么。 – Elonoa 2013-03-11 19:48:00

+0

@Elonoa,很高兴我能帮到你。 – 2013-03-11 20:44:27