Seperti banyak hal, pendekatan yang benar tergantung pada apa yang Anda coba lakukan untuk tombol tertentu dan apa lagi yang Anda lakukan dengan aktivitas tersebut.
Kelas aktivitas mengimplementasikan antarmuka :
Ini adalah opsi yang baik ketika Anda hanya memiliki satu jenis tugas untuk dieksekusi ketika pendengar ini dipanggil. Contohnya adalah formulir sederhana dengan sejumlah bidang dan tombol simpan. Saya lebih suka untuk tidak meminta pendengar acara saya memeriksa sumber acara untuk memutuskan apa yang sebenarnya perlu dilakukan. Saya tahu bahwa beberapa orang mungkin mengatakan ini adalah hal gaya, tetapi saya percaya bahwa dengan tidak mengharuskan pendengar untuk melakukan pemeriksaan ini membuat kode lebih mudah diikuti karena Anda akan tahu persis apa yang dipanggil untuk setiap acara.
Kelas yang berbeda mengimplementasikan antarmuka :
Seperti yang saya katakan di atas, saya lebih suka opsi ini ketika saya memiliki beberapa item yang dapat menjalankan acara yang sama. Memperluas contoh di atas, mari tambahkan tombol yang jelas yang juga membutuhkan pendengar klik. Buat satu pendengar yang melakukan tindakan simpan sebelumnya dan yang melakukan tindakan hapus terlebih dahulu. Setiap pendengar hanya ditambahkan ke komponen yang akan menghasilkan tindakan itu.
Implementasi ini memiliki manfaat tambahan yang dapat Anda manfaatkan jika Anda peduli. Manfaatnya adalah mencegah kelas lain memicu peristiwa di dalam kelas aktivitas Anda. Karena metode antarmuka harus bersifat publik, siapa pun yang memiliki referensi ke kelas dapat memecat acara. Jika Anda ingin kontrol yang jelas atas siapa yang dapat melakukan apa dalam aplikasi, kelas yang terpisah mencegah siapa pun dengan referensi ke aktivitas untuk memicu formulir Anda dihapus atau disimpan (atau berpotensi melanggar kode jika pendengar menggunakan sumber, tetapi tidak tidak menangani input yang buruk).
Kelas dalam anonim mengimplementasikan antarmuka :
Ini benar-benar hanya cara khusus untuk membangun opsi kedua menggunakan kelas yang berbeda sebagai implementasinya. Opsi ini bahkan dapat membatasi siapa yang memiliki akses untuk memicu acara karena tidak ada orang lain yang dapat membuat instance kelas. Namun, saya pikir faktor yang lebih penting antara kedua opsi tersebut adalah seberapa banyak pekerjaan yang sedang dilakukan. Menghapus beberapa bidang teks adalah operasi yang sederhana dan lurus ke depan. Namun, proses menyimpan untuk dapat melibatkan sejumlah tugas adalah Anda memvalidasi input (yang seharusnya Anda lakukan), menulis ke database untuk menyimpan nilai-nilai dan memicu beberapa tindakan pasca penyimpanan. Dalam hal ini, membuat kelas terpisah dengan file sendiri akan memberikan pembagian yang lebih jelas antara formulir input dan pemrosesan data. Ini pada gilirannya membuat kode formulir bukan file yang lebih besar dengan beberapa kelas dalam bersarang di dalamnya.