这可能是一个非常新的问题,但我有一个名为Scene的类,它有一个名为Layer的类数组。每一层都像一个界面层或游戏屏幕层,场景调用更新和绘制层等功能。
我的问题是在添加或删除这些图层时应该是这样 的 scene.addLayer(层); 要么 的 layer.addToScene(场景); ?
我看起来都不错,但是在OOP中是否有任何规则?
答案 0 :(得分:1)
这不是问题,而是我认为你想要一个意见......
我不知道任何OOP规则都会阻止他们中的任何一个,但我认为scene.addLayer(layer)
是最好的,因为它最有意义。假设你有一个装硬币的罐子。你会说coin.addToJar
吗? 否 ,这没有意义!硬币不会放入罐子里!你必须告诉罐子接受硬币。即使使用Java GUI,也有Container.add(Component)
。
(P.S。这个问题不一定必须在Java标签中,它可以应用于任何面向对象的语言。)
答案 1 :(得分:1)
我不得不说@Java写了一个可爱的答案,我将为您提供另一种观点。如果你的图层在拥有它们的场景被删除时将被垃圾收集(删除),那么我将使用Scene.AddLayer(Layer)
,因为它为场景提供了一些所有权语义。另一方面,如果这些图层将由不同的场景共享,我将使用Layer.AddToScene(Scene)
出于相反的原因。当然,这只是一种个人风格,并非基于任何软件工程原理。