私有静态列表,包含所有构造的对象 您所在的位置:网站首页 静态私有属性 私有静态列表,包含所有构造的对象

私有静态列表,包含所有构造的对象

2023-03-07 18:12| 来源: 网络整理| 查看: 265

我正在写动画节目,其中有很多球在跑来跑去弹跳.

我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 实验室设备网 版权所有