AOP เอาไว้แก้ปัญหาเรื่อง Cross cutting concern นะ
แปลเป็นไทย cross cutting concern ก็คือ สิ่งที่เราต้องสนใจที่ตัดผ่านสิ่งที่เราสนใจ
ยกตัวอย่างละกัน เราจะทำระบบอะไรสักอย่าง เช่น โอนเงินระหว่างบัญชี จากธนาคารละกันนะ
ในส่วนนี้ concern หลักของ bussiness ก็แค่ ลดเงินของ บัญชีนึง แ้้ล้วไปเพิ่มใส่อีกบัญชีนึง
แต่จากระบบนี้ เราจะมี cross cutting concern ที่ตัดผ่านงานเราเยอะแยะเลย เช่น การใส่ใจเรื่อง security authentication, transection management, logging message, presistance, availability ต่างๆ
พวกนี้อาจจะเป็นทั้ง functional หรือ non-function requirement ของระบบก็ได้ค่ะ
จะเห็นว่าในระบบเรานี้ นอกจากส่วน โอนเงิน cross cutting concern เหล่านี้มันลากตัดผ่าน ระบบอื่นๆ อีกเพียบเลย
บางระบบ อาจจะมี แค่ logging แต่ไม่มี security authen
บางระบบ ก็ใช้ concern ต่างๆ พวกนี้ไม่เท่ากัน
เวลา implement ด้วยแนวทาง OOP จึงทำให้เกิดปัญหาต่างๆ คือ
- concern เหล่านี้ลากตัดผ่านกระจัดกระจาย ทั่วไปในงานเรา (scattering) บางงานใช้บ้าง ไม่ใช้บ้าง
- โค๊ดของงานเราในแต่ละ modular ยุ่งเหยิง (tangling) เพราะมัวแต่ไปจัดการเรื่อง cross cutting เหล่านี้ ทั้งที่จริงๆ แล้ว bussiness ของงานมันแค่นิดเดียวเอง
เมื่อเป็นเช่นนี้แ้ล้วก็ระบบก็จะมี low cohesive เกิด high couple ไ่ล่ code ก็ยาก แ้ล้วก็ reuse ได้ยากอีกเช่นกันนะ
แนวทางใหม่ที่นำเสนอขึ้นนั่นคือ AOP (aspect oreinted programming)ค่ะ
aop สามารถนำมาประยุกต์ให้เข้ากับ OOP ได้อย่างดี ช่วยแก้ปัญหาที่พบได้เร็วขึ้น
concern แยกออกจากกันอย่างชัดเจน สามารถ trace concern เหล่านี้ได้มากกว่าค่ะ
ลองหาเอกสาร AOP เพิ่มเติมดูละกันนะคะ
สำหรับ JAVA ถ้าอยากเขียนงานให้สามารถทำ AOP ได้ลองศึกษา AspectJ ดูละกันค่ะ
จากที่รักบอกมา เจ้าค่ะ
หนูเป็นเด็กอยากรู้อยากเห็น เจ้าค่ะ
จากคุณ deans4j แห่ง Blognone.com http://www.blognone.com/node/1426