避免内部吸气/安装者 - 游戏

时间:2010-08-19 22:36:26

标签: java android

我正在开发游戏。视图,线程和引擎完成。现在我将讨论如何将坐标设置为我的位图。

我使用getter / setters-method成功完成了这项工作。我一直在网上阅读大多数优秀的游戏开发者说“让你的成员变量公开”以及所有这些东西。

自从我在http://developer.android.com/guide/practices/design/performance.html阅读了避免内部获取者/设定者部分以来,我开始想知道:如何在没有“设定者”的情况下改变我的坐标等级来实现这一目标?

现在我的坐标课看起来像:

package com.mygame.mygame;

public class Coordinates {
    int x;
    int y;
    Coordinates instance = null;

 public Coordinates getInstance(){
  if(instance == null){
   instance = new Coordinates();  
  }
  return instance;
 }

    public Coordinates() {    
    }

    public int getX() {
        return x;
    }

    public void setX(int value) { 
        x = value;
    }

    public int getY() {
        return y;
    }
    public void setY(int value) {
        y = value;
    } 

}

我应该如何更改代码才能实现此目的?方法调用很昂贵,但我仍然不知道如何在没有getter和setter的情况下重构当前代码。

已更新

 public GameEngine getInstance(){
 if(instance == null){
  instance = new GameEngine(resources,view);  
  }
  return instance;
  }

更新2

GameEngine

    static Resources res;

static GameView view;

static GameEngine instance = null;

public static GameEngine getInstance(Resources localResources, GameView localView){
    view = localView;
    res = localResources;
    if(instance == null){
        instance = new GameEngine(); //Init-stuff in the GameEngine
    }
    return instance;
}

和我的GameView

static GameEngine engine;
public GameView(Context localContext) {
   //Other stuff
   engine = GameEngine.getInstance(context.getResources(), this);
   //Other stuff
}

提前致谢!

2 个答案:

答案 0 :(得分:3)

你似乎误解了“内部”这个词。该文档更能告诉您,您应该做例如:

public Coordinates(int x, int y) {
    setX(x);
    setY(y);
}

但更多

public Coordinates(int x, int y) {
    this.x = x;
    this.y = y;
}

换句话说,避免在相同类中使用getter / setter作为定义它们的位置。

顺便提一下,你现在的课程并没有这样做。在这种情况下,只有getInstance()方法才是毫无意义的。我会摆脱它。

答案 1 :(得分:1)

public是成员的默认值,除非另有说明。只是不要为x和y使用getter或setter。