Я работаю над игрой. View, Thread и Engine выполнены. Теперь я расскажу, как, например, установить координаты в мой битмап.
Я успешно сделал это с помощью метода get/seters. Я читал по сети там, большинство из лучших разработчиков игр говорят, что "сделайте свою переменную участника общедоступной" и все такое.
Так как я прочитал раздел "Избегайте внутренних геттеров/сеттеров" в http://developer.android.com/guide/practices/design/performance.html, я начал задаваться вопросом: как я могу изменить свои координаты- класс для достижения этого без "сеттеров", например?
Теперь мой класс Coordinates выглядит следующим образом:
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;
}
}
Как мне изменить свой код, чтобы достичь этого? Вызов метода дорог, но я до сих пор не знаю, как реструктурировать текущий код без геттеров и сеттеров.
ОБНОВЛЕНО
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
}
Спасибо заранее!
Вы, кажется, неправильно понимаете слово "внутреннее". Этот документ больше говорит вам, что вы не должны делать, например:
public Coordinates(int x, int y) {
setX(x);
setY(y);
}
но тем более
public Coordinates(int x, int y) {
this.x = x;
this.y = y;
}
Другими словами, избегайте использования getters/seters в классе same, где они определены.
Ваш текущий класс не делает этого где-то между прочим. Только метод getInstance()
просто бесполезен в этом контексте. Я бы избавился от него.
public - это значение по умолчанию для членов, если не указано иное. Просто не используйте геттер или сеттер для x и y.