<$BlogRSDUrl$>

Thursday, April 01, 2004

Kesesuaian AOP
6. Bridge. Semasa insert, saya memerlukan hubungan kpd satu module lain. Selain insert record saya sendiri, saya perlu insert record kat table lain yg digunakan oleh module lain. Kalau cara biasa, saya kena ubah code sedia ada, cara AOP, saya buat kelakuannya dan 'letakkan' kat mana2 yg saya nak.

Tambahan penerangan tentang logging dgn AOP. Salah satu objektif lib yg buat logging dlm java spt Log4J atau yg built in dlm jdk 1.4, ialah utk membuatkan kos melakukan logging ini seminima yg mungkin. Utk itu, mereka mewujudkan tahap2 dlm logging spt WARN, INFO dll. Selain itu, mereka tak terus menyimpan data dlm log tersebut ke file, tapi, mengumpulkannya dulu dan simpan secara batch.

Ini semua membantu mencapai objektif kos, tapi masih ada satu kos yg mereka tak boleh elakkan. Cthnya:
log.info("Masalah! Nilai umur " + umur + " mestilah dlm julat nilai antara " + UMUR_MINIMUM + " dan " + UMUR_MAKSIMUM);

Code logging kat atas ni tak akan kelihatan jika tahap disetkan kpd melebihi tahap INFO. Jadi tiada kos utk menyimpannya dlm file dan memaparkannya ke console. Tapi, masih terdapat kos dlm MENGGABUNGKAN semua string2 ini menjadi 1 string. Ini tak leh elak, kecuali kita letakkan spt:
if (nakLog)
log.info("Masalah! Nilai umur " + umur + " mestilah dlm julat nilai antara " + UMUR_MINIMUM + " dan " + UMUR_MAKSIMUM);


Tapi cara diatas pun semakin leceh krn setiap class yg nakkan khidmat log kena ada flag ini.

Satu cara mudah dan amat berkesan ialah dgn menggunakan AOP. Bila nak disablekan logging sepenuhnya, mahupun sebahagian, kita hanya perlu buang aspect yg berkenaan dpd projek kita dan compile semula. Code2 logging terus tak de dlm code asal.

Comments: Post a Comment

This page is powered by Blogger. Isn't yours?