[AOP] Aspect Oriented Programming

พอดีได้รื้อพื้นความรู้เก่าๆ และก็เจอเรื่องน่าสนใจมาเขียน blog พอดีเลย เข้าเรื่องกันเลยดีกว่า AOP เนี่ย หรือ ชื่อทางการของมัน คือ Aspect Oriented Programming โดยเจ้า AOP เป็นแนวคิดนึง ที่เป็น Guideline ที่ช้วยในการพัฒนาระบบครับ เหมือนกับ OOP ที่มองทุกอย่างเป็น Object ครับ !!! AOP ไม่ได้มาแทนที่ OOP นะครับ !!! หลายคนที่อ่านมาถงตรงนี้อาจจะงงกัน มองง่ายๆว่าเป็นส่วนเสริมของ OOP ครับ เพราะ OOP เนี่ย ถ้าเรานำมา Implement พัฒนาระบบ ระบบหนึ่ง มันมีเรื่องที่เราต้องสนใจมากมาย ไม่ได้สนใจแต่ตัว Business เพียงอย่างเดียวนะครับ อาทิ เช่น เรื่อง Security และ Log เป็นต้นนะครับ ตัวอย่าง เช่น การที่เราสร้าง Class หนึ่งขึ้นมา มีหน้าที่ในการตัดจ่ายสินค้าในโกดังนะครับ โดยหน้าที่ของ Class มีหน้าที่คร่าว ดังนี้ จากตัวอย่างข้างต้น สิ่งที่ Class นี้ความมีจริงๆ ควรเป็นสิ่งที่อธิบายในเรื่องของ Business ครับ พวกตัดจ่ายสินค้า, ดูยอดคงเหลือ ส่วนเรื่องบันทึก Log (ตัดออกได้ แต่พอโปรแกรมมีปัญหานี่ ยาวเลยนะกว่าจะ Tracking ได้ และตรวจสอบสิทธินั้นไม่จำเป็น แต่ก็เอาออกไม่ได้ 555 ซึ่งก็แล้วแต่การเก็บ Requirement และการออกแบบระบบ ไอ้สองส่วนหลังเนี่ยแหละ มันคือ Cross cutting concern เรียกแบบที่ผมเข้าใจนะ มัน คือ สิ่งที่เราต้องสนใจ แต่มันเกี่ยวพันกับสิ่งในสิ่งที่เราสนใจจริงๆ ลองมาดูที่ Code กับมันมีส่วนของ Business กับส่วนที่เราต้องสนใจเพิ่มลงไป (พวก Log, Security เป็นต้น)…