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