Konteks pembicaraan saya adalah pemrograman Java.
Aspect Oriented Programming (AOP) adalah pola pikir dalam pemrograman. AOP berada di posisi yang sama dengan Object Oriented Programming (OOP) yaitu suatu konsep dan AOP ada untuk melengkapi OOP. AOP menambahkan konsep baru dan sederhana ke dalam OOP untuk lebih mempertajam (sifat) modularity yang ada dalam OOP.
Pemahaman saya tentang modularity dalam pemrograman adalah memisahkan suatu aplikasi menjadi bagian-bagian yang lebih kecil, yang disebut modul. Modul-modul itu dapat terdiri dari dari satu atau banyak kelas (class).
Kemudian diterapkan konsep AOP di sana, sehingga menjadi seperti ini.
Dengan begini ActionSave bahkan tidak tahu kalau fungsi auth() akan selalu di eksekusi terlebih dahulu tepat sebelum fungsi save() dieksekusi. Sangat mempertajam sifat modularity. Apa bagusnya hal itu?
ActionSave tidak akan pernah bergantung pada Auth. ActionSave adalah kelas independen.Apakah ActionSave tidak bergantung pada Dao? Tidak, karena ActionSave dan Dao memiliki satu tugas yaitu meyimpan data (save) dan ActionSave tidak akan pernah lengkap dan tidak akan berjalan dengan benar jika mereka dipisahkan. Sedangkan dengan Auth, ActionSave dapat saja berjalan dengan benar dengan hasil yang diinginkan walaupun tanpa autentikasi.
Auth memiliki fungsi-fungsi untuk autentikasi.Hal baik lainnya
- Reusable
- ActionSave tidak perlu bertanggung jawab untuk pemanggilan fungsi autentikasi user. Sebaliknya Auth yang akan bertanggung jawab agar ActionSave selalu di akses oleh user-user yang berhak (isu crosscutting-functionalities).
- Tidak ada duplikasi kode program untuk fungsi autentikasi, hanya berada dalam Auth (isu code-scattering).
- Tidak ada duplikasi pemanggilan fungsi autentikasi (isu code-scattering).
- Jika terjadi perubahan di kelas Auth tidak akan pernah mengganggu ActionSave (isu code-scattering).
- Kode program akan menjadi lebih rapi.
Terima kasih sudah berkunjung/thank you for coming.