תכנות מונחה היבטים (AOP) מחמיא ל-OOPs במובן זה שהוא גם מספק מודולריות. אבל יחידת המפתח של מודולריות היא היבט מאשר מחלקה.
AOP מפרק את הלוגיקה של התוכנית לחלקים נפרדים (הנקראים דאגות). הוא משמש להגברת המודולריות על ידי חששות רוחביים .
א דאגה רוחבית הוא חשש שיכול להשפיע על כל האפליקציה ויש לרכז אותו במיקום אחד בקוד ככל האפשר, כגון ניהול עסקאות, אימות, רישום, אבטחה וכו'.
למה להשתמש ב-AOP?
הוא מספק את הדרך הניתנת לחיבור להוסיף באופן דינמי את הדאגה הנוספת לפני, אחרי או סביב ההיגיון בפועל. נניח שיש 10 שיטות במחלקה כפי שמוצג להלן:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
יש 5 שיטות שמתחילות מ-m, 2 שיטות שמתחילות מ-n ו-3 שיטות שמתחילות מ-p.
הבנת תרחיש אני צריך לנהל יומן ולשלוח הודעה לאחר שיטות שיחות שמתחילות מ-m.
בעיה ללא AOP אנו יכולים לקרוא לשיטות (ששומרות על יומן ושולחות הודעות) מהשיטות שמתחילות ב-m. בתרחיש כזה, עלינו לכתוב את הקוד בכל 5 השיטות.
אבל, אם הלקוח אומר בעתיד, אני לא צריך לשלוח הודעה, אתה צריך לשנות את כל השיטות. זה מוביל לבעיית התחזוקה.
פתרון עם AOP אנחנו לא צריכים לקרוא לשיטות מהשיטה. כעת אנו יכולים להגדיר את הדאגה הנוספת כמו שמירה על יומן, שליחת הודעה וכו' בשיטה של מחלקה. הערך שלו ניתן בקובץ xml.
בעתיד, אם הלקוח יאמר להסיר את פונקציונליות המודיע, עלינו לשנות רק בקובץ ה-xml. אז התחזוקה קלה ב-AOP.
מחשב נייד ראשון
איפה משתמשים ב-AOP?
AOP משמש בעיקר במקרים הבאים:
- לספק שירותים ארגוניים הצהרתיים כגון ניהול עסקאות הצהרתי.
- זה מאפשר למשתמשים ליישם היבטים מותאמים אישית.
AOP מושגים ומינוח
המושגים והטרמינולוגיות של AOP הם כדלקמן:
- נקודת הצטרפות
- עֵצָה
- Pointcut
- מבוא
- אובייקט מטרה
- אספקט
- מיירט
- פרוקסי AOP
- אֲרִיגָה
נקודת הצטרפות
נקודת צירוף היא כל נקודה בתוכנית שלך כגון ביצוע שיטה, טיפול בחריגים, גישה לשדה וכו'. Spring תומך רק בנקודת צירוף לביצוע שיטה.
עֵצָה
עצה מייצגת פעולה שננקטה על ידי היבט בנקודת צירוף מסוימת. ישנם סוגים שונים של עצות:
- לפני עצה : הוא מבצע לפני נקודת צירוף.
- לאחר החזרת עצה : הוא מבוצע לאחר שנקודה משותפת מסתיימת כרגיל.
- עצה לאחר זריקה : הוא מופעל אם השיטה יוצאת על ידי זריקת חריגה.
- אחרי (סוף סוף) עצה : היא מופעלת לאחר נקודת הצטרפות ללא קשר ליציאה של נקודת הצטרפות בין אם החזרה רגילה או חריגה.
- סביב עצות : הוא מבצע לפני ואחרי נקודת צירוף.
Pointcut
זוהי שפת ביטוי של AOP התואמת נקודות הצטרפות.
מבוא
המשמעות היא הכנסת שיטה ושדות נוספים עבור סוג. זה מאפשר לך להציג ממשק חדש לכל אובייקט מומלץ.
אובייקט מטרה
זהו האובייקט, כלומר לקבל ייעוץ על ידי היבט אחד או יותר. זה ידוע גם כאובייקט פרוקסי באביב מכיוון ש-Spring AOP מיושם באמצעות פרוקסי זמן ריצה.
אספקט
זה שיעור שמכיל עצות, נקודות צירוף וכו'.
מיירט
זה היבט שמכיל רק עצה אחת.
פרוקסי AOP
הוא משמש ליישום חוזי היבט, שנוצרו על ידי מסגרת AOP. זה יהיה פרוקסי דינמי של JDK או פרוקסי CGLIB במסגרת אביבית.
אֲרִיגָה
זהו תהליך של קישור היבט עם סוגי יישומים או אובייקטים אחרים כדי ליצור אובייקט מומלץ. ניתן לבצע אריגה בזמן קומפילציה, זמן טעינה או זמן ריצה. Spring AOP מבצע אריגה בזמן ריצה.
מהי פקודת ייצוא בלינוקס
יישום AOP
יישומי AOP מסופקים על ידי:
- AspectJ
- AOP אביב
- JBoss AOP
AOP אביב
ניתן להשתמש באביב AOP ב-3 דרכים המפורטות להלן. אבל הגישה הנפוצה היא Spring AspectJ Annotation Style. 3 הדרכים להשתמש באביב AOP ניתנות להלן:
- מאת Spring1.2 בסגנון ישן (מבוסס dtd) (נתמך גם ב-Spring3)
- לפי AspectJ בסגנון הערות
- לפי Spring XML סגנון תצורה (מבוסס סכימה)
קישורי עזר
מקור אביב AOPSpring Source AOP API
ויקיפדיה