บางคนสามารถอธิบายแนวคิดของ AOP สำหรับหุ่นได้ที่จุดเชื่อม, จุดตัด, การทอ ฯลฯ
ตัวอย่างเช่น: มุมมอง: การทำให้เป็นโมดูลของข้อกังวลที่ตัดข้ามหลายคลาส นั่นหมายความว่าอย่างไร?
บางคนสามารถอธิบายแนวคิดของ AOP สำหรับหุ่นได้ที่จุดเชื่อม, จุดตัด, การทอ ฯลฯ
ตัวอย่างเช่น: มุมมอง: การทำให้เป็นโมดูลของข้อกังวลที่ตัดข้ามหลายคลาส นั่นหมายความว่าอย่างไร?
คำตอบ:
นึกถึงข้อกังวลในฐานะกลุ่มการทำงานเช่นการบันทึกการตรวจสอบความปลอดภัย
ฟังก์ชันเหล่านี้เคยอยู่ในรหัสมากที่สุด แต่พวกเขาไม่ได้มีชีวิตอยู่จริงๆในสัตว์> เรียนสุนัขของเรา - พวกเขามีฟังก์ชันการทำงานที่ควรจะอยู่ในชั้นเรียนจำนวนมาก - พวกเขามีความกังวลเกี่ยวกับการตัดข้าม
Joinpointเป็นสถานที่ในรหัสที่รหัสด้านที่เป็นจริงวิ่ง
pointcutเป็นวิธีการที่จะพูดในสิ่งรหัสทำงานที่ jointpoint
การทอผ้า - คือเมื่อคอมไพเลอร์ / ระบบใช้รหัสปกติของคุณและรวมรหัส AOP ทั้งหมดเพื่อที่จะทริกเกอร์รหัสที่ถูกต้อง ฯลฯ - สามารถคิดได้ว่านี่เป็นขั้นตอนก่อนการคอมไพล์พิเศษ
ตัวอย่างที่เข้าใจง่ายคือ:
โปรดทราบว่าคำศัพท์นั้นมีความแตกต่างกันเล็กน้อยระหว่างการใช้งานที่แตกต่างกันและกรอบ AOP
แต่ละคำจำกัดความสร้างบนคนก่อนหน้า
สิ่งที่รบกวนคุณ (ข้อกังวล) ทุกที่ (การตัดขวาง) ในแอปพลิเคชันของคุณ เช่นการบันทึกหรือความปลอดภัย
กลุ่มของรหัสที่ถูกเพิ่มโดยอัตโนมัติก่อน , หลัง , หรือทั้งสอง ( รอบ ) รหัสที่คุณมีอยู่
Application code
|
|
|
|
\|/
|
JoinPoint ----------->("before" aspect, on the way in) // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
//your application code
Pointcut finish--------> return (foo)
JoinPoint ----------->("after" aspect, on the way out) // just after your intercepted application code
|
\|/
|
|
|
Application code
สถานที่ในการเรียกใช้โค้ดโดยที่ส่วนหนึ่งของมุมมองดำเนินการ
จุดที่ลักษณะของคุณ "รวม" จุดตัด ที่ "ก่อน" joinPoint คุณจะสามารถเข้าถึงพารามิเตอร์ได้ที่ "หลังจาก" joinPoint คุณจะสามารถเข้าถึงค่าส่งคืน หากมีข้อผิดพลาดเกิดขึ้นคุณอาจต้อง "ลองจับในที่สุด" เพื่อจัดการหรือโยนใหม่
กระบวนการเพิ่มแง่มุมรอบ ๆ จุดตัด