Соглашение о программировании для анонимного класса против реализующего интерфейса
С точки зрения разработки Android, пока вы программируете, какой путь вы предпочитаете использовать для слушателя? Или какой способ, по вашему мнению, лучше всего подходит для читабельного кода? Я привел два примера об этих вещах, но думаю, что более сложные классы, например, с несколькими слушателями:)
Первый пример, который является Анонимным Классом:
public class SenderReceiverActivity extends Activity {
Button cancelButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sending);
cancelButton = (Button) findViewById(R.id.button1);
cancelButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
}
});
}}
Второй пример, который реализует интерфейс:
public class SenderReceiverActivity extends Activity implements OnClickListener {
Button cancelButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sending);
cancelButton = (Button) findViewById(R.id.button1);
cancelButton.setOnClickListener(this);
}
public void onClick(View v) {
}
}
3 ответа
Я думаю, что второй подход хорош как
1- вы можете обрабатывать несколько просмотров клик в одном месте...
2- это делает код короче и легко читаемым.
3 - это легко в обслуживании.
4 - если вы используете концепцию Base Activity как в вашем проекте, то это также полезно.
Если у вас есть одна кнопка, то первое приближение будет правильным, потому что в вашем коде нет никакой сложности, кроме случаев, когда you have many button then second is more clear ,just one onClick method for many buttons and check id of button using v.getId()
Но никаких изменений в функциональности нет, они идентичны.
Ну, на самом деле нет большого различия между ними, кроме одного: во втором случае у вас есть доступ к onClick(View v)
метод вне класса.
Если это касается меня, я предпочитаю первый подход, потому что не часто более одного компонента ведут себя одинаково при нажатии.