Я работаю над игрой. View, Thread и Engine выполнены. Теперь я расскажу, как, например, установить координаты в мой битмап.Избегайте внутренних геттеров/сеттеров - Игра
Я успешно сделал это, используя getters/seters-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;
}
}
Как я должен изменить свой код для достижения этой цели? Вызов метода дорог, но я до сих пор не знаю, как реструктурировать текущий код без геттеров и сеттеров.
ОБНОВЛЕНО
public GameEngine getInstance(){
if(instance == null){
instance = new GameEngine(resources,view);
}
return instance;
}
UPDATE 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
}
Спасибо заранее!
Wow! В этом есть смысл! Но это способ сделать это? Не слишком ли дорогие вызовы в этих перспективах? Ну, у меня есть метод звонков в моем Engine. – Curtain
Это нормальная практика, да. Что касается дороговизны, вызовы метода getter/setter особенно дешевы, это скорее вопрос стиля. Но в машине с несколькими ресурсами и практически без оптимизаций JIT, таких как мобильные телефоны, я бы предположил, что каждая оптимизация более чем приветствуется. – BalusC
Ну ладно, так вот мой путь. Я обновил свой код с помощью кода моего GameEngine. Неужели этот экземпляр тоже бесполезен? – Curtain