AOP مخفف Aspect Oriented Programming به مفهوم برنامه نویسی جنبه گراست و همواره در کنار مدل OOP استفاده می شود. برای مثال در برخی از پروژه ها ممکن است نیاز داشته باشید تا سطوح مختلف دسترسی به هر یک از کلاس ها و توابع را بررسی نمایید. در این مثال در برنامه نویسی OOP شما بایستی در هریک از متد ها و کلاس ها کد های مورد نظر را برای بررسی سطح دسترسی اضافه نمایید. اما در برنامه نویسی جنبه گرا بدون تغییر کد اصلی میتوانید مواردی را مانند رویداد به برنامه خود افزوده و در این مثال به عنوان رویداد ورود به یک متد, سطوح دسترسی را بررسی نمایید.

اگر چه با استفاده از OOP میتوان یک نرم افزار ماژولار ایحاد کرد اما مشکلاتی با عنوان Cross-Cutting Concern وجود دارد که باعث می شود برخی از کد ها در تمام ماژول ها تکرار شوند. مانند بررسی سطوح دسترسی, لاگ گیری, بررسی امنیت ورودی داده ها, استفاده از کش و … . AOP راهکاری است  برای حل این مشکل تا با این روش بتوان ماژولی جداگانه ایجاد کرد که تمام موارد بالا را بدون اضافه کردن کد به ماژول های دیگر بررسی و اعمال نمود. در AOP زمان فراخوانی کد قابل تنظیم است و میتوان در یکی از حالت های زیر کد مورد نظر را اجرا نمود:

Before : قبل از اینکه بدنه متد مورد نظر اجرا شود این رویداد رخ خواهد داد.

After : بعد از فراخوانی و پایان متد اجرا خواهد شد.

Around : در این حالت امکان بررسی بدنه متد و سپس اجرای کد مورد نظر وجود دارد.

کد زیر را در نظر بگیرید :‌

در روش AOP اگر ماژولی را در نظر بگیریم که قرار است کار بررسی سطوح دسترسی را انجام دهد اگر رویداد را به صورت زیر تعریف کنیم :

Aspect : Before calling all methods like test*() do this : checkAccessForThisUser

 

دستور checkAccessForThisUser قبل از اجرای بدنه اصلی تمام متد هایی که با test شروع می شوند اجرا می شود. با در نظر گرفتن این موارد, هنگام اجرا چیزی شبیه به این خواهیم داشت :

 

برای اطلاع کامل از AOP به لینک زیر مراجعه نمایید : با جنبه برنامه بنویسید!

در زند فریم ورک ۲ که از رویداد ها استفاده شده است میتوان به وضوح وجود این الگو را مشاهده کرد. در مطالب آینده در رابطه با EventManager در زند فریم ورک ۲ بیشتر بحث خواهیم کرد.

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*


5 − چهار =