我正在开发游戏。视图,线程和引擎完成。现在我将讨论如何将坐标设置为我的位图。
我使用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
}
提前致谢!
答案 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。