В моем проекте Android я определяю несколько обратных вызовов для работы с нажатиями кнопок, событиями подключения или событиями пользовательского интерфейса, такими как Dilaog.onShow(). Для демонстрационных целей я выбрал интерфейс Runnable, который должен быть запущен из некоторого кода активности. С Java у меня разные способы выразить себя.Каков предпочтительный способ организации обратных вызовов?
Один образец будет использовать анонимный класс
runOnUiThread(new Runnable() {
public void run() {
doSomething();
}
});
private void doSomething() {
}
другой - определить внутренний частный класс, т.е.
private DoSomething implements Runnable {
public void run() {
// do something;
}
}
...
runOnUiThread(new DoSomething());
еще один - использовать частный член, как это:
private final Runnable doSomething = new Runnable() {
public void run() {
// do something;
}
}
...
runOnUiThread(doSomething);
Вот еще один, который мне больше всего нравится, потому что с одной стороны он фактически не создает o bjects, если кто-то действительно не использует его, потому что он избегает дополнительных классов, потому что он может принимать параметры, если это необходимо.
private Runnable doSomething() {
return new Runnable() {
public void run() {
// do something;
}
}
}
...
runOnUiThread(doSomething());
Я не ищу аргументы вкуса или религиозных убеждений, но с точки зрения ремонтопригодности и производительности кода. Я хотел бы получить подсказки и советы, которые могли бы помочь мне разработать мои собственные предпочтения, возможно - разные предпочтения в соответствии с данным обстоятельством.
Спойлер:
Прогресс Java вынес этот вопрос устарел, см принятого ответа.
Релевантно: [Это конец \ [качество кода \]?] (Http://meta.stackoverflow.com/q/313767/4639281). Если вы можете отредактировать этот вопрос, чтобы сложить его так, чтобы он не основывался на мнениях, и удалил тег [tag: code-quality], тогда я бы отменил свое закрытое голосование (или проголосовал за повторное открытие, если он снова закрылся). –
Извините, я понятия не имел об этой проблематичной теге. –
Ваш вопрос по-прежнему имеет слишком выраженную формулировку. Я уверен, что его можно отредактировать, чтобы этого не было, но это зависит от вас. –