私有静态列表,包含所有构造的对象 | 您所在的位置:网站首页 › 静态私有属性 › 私有静态列表,包含所有构造的对象 |
我正在写动画节目,其中有很多球在跑来跑去弹跳. 我Ball上课代表球的行为. 当我用另一个球实施球的collisioin时, 我必须检查所有其他球. 所以我上了这堂课. public class Ball{ private static final List allBalls; static{ allBalls = new ArrayList(); } private Ball(){} public static Ball getNewBall(){ Ball ball = new Ball(); allBalls.add(ball); return ball; } public void collision(){ for(Ball b : allBalls){ //check whether b is colliding with me //and if colliding, change speed of me and b. } } }这种设计(将所有对象保存在私有静态列表中)是好还是坏? 1> markbernard..: 你应该拥有的是一个BallManager能够处理这些东西的类. public class BallManager { private static BallManager instance = new BallManager(); private BallManager(){} public static BallManager getInstance() { return instance; } public List ballsInPlay = new ArrayList(); public void createBall(int x, int y) {} public void checkCollisions() { // loop ball list and check collisions // perform cleanup based on collisions } private void ballCleanup(){} } public class Ball{ public Ball(){} public void collision(Ball other){} }注意:从静态类更改为单例.另外,通过在checkCollisions方法之后添加()来修复编译错误 请注意,您可能不需要管理器中的所有"静态" |
CopyRight 2018-2019 实验室设备网 版权所有 |