آشنایی با الگوی طراحی Decorator


در این آموزش قصد داریم تا با Decorator Design Pattern در قالب مثالی کاربردی در زبان برنامه‌نویسی PHP آشنا شویم که یکی از زیرشاخه‌های الگوهای طراحی Structural (ساختاری) است و به‌کارگیری از آن در شرایطی موجب بهبود پروسۀ توسعۀ اپلیکیشن می‌شود که دولوپرها بخواهند تا یکسری فیچر خاص را به کلاس مد نظر خود بیفزایند. 

الگوی طراحی دکوراتور یک روش جایگزین برای مفهوم Sub Class است که بدین وسیله دولوپرها در زمان اجرای اپلیکیشن می‌توانند کلاسی را پیاده‌سازی کنند که علاوه بر برخورداری از خصوصیات منحصربه‌فرد خود، کلیهٔ خصوصیات کلاس پَرِنت (والد) را اصطلاحاً به ارث می‌برد به طوری که خصوصیات کلاس والد روی تمامی نمونه‌های ساخته‌شده از این کلاس اِعمال خواهد شد در حالی که الگوی طراحی دکوراتور این امکان را در اختیار دولوپرها قرار می‌دهد تا بتوانند در حین اجرای برنامه، رفتارها و فیچرهای جدید را تنها روی آبجکت‌ مد نظر خود اضافه کنند. بر اساس تعریف ارائه‌شده در ویکیپدیا برای این دیزاین پترن داریم:

دکوراتور یک الگوی طراحی است که این امکان را برای دولوپرها فراهم می‌آورد تا بتوانند یکسری فیچر مد نظر خود را به آبجکت منحصربه‌فردی از یک کلاس اضافه کنند به طوری که این رفتار روی سایر آبجکت‌های ساخته‌شده از کلاس مذکور اِعمال نشود.

برای روشن شدن نحوۀ پیاده‌سازی این الگوی طراحی، یک سناریوی فرضی را در نظر می‌گیریم که در آن قصد داریم تا کلاسی را پیاده‌سازی کنیم که وظیفۀ تولید محتوایِ ایمیل را دارا است به طوری که این کلاس قابلیت ارسال ایمیل با دو متن متفاوت را علاوه بر متن پیش‌فرض خود داشته باشد و همچنین رفتار آبجکت ساخته‌شده از روی کلاس مذکور روی آبجکت دیگری از همان كلاس تأثیری نداشته باشد که برای این منظور از الگوی طراحی دکوراتور استفاده می‌کنیم.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

جمع‌بندی
معمولاً اپلیکیشن‌ها پس از مدتی و بنا بر شرایط مختلف نیاز به بازنگری، ریفتکتورینگ و افزودن یکسری فیچرها در جهت انجام تَسک‌های مختلف دارند و از همین روی در چنین شرایطی راه‌حل مناسب استفاده از الگوی طراحی دکوراتور است که این امکان را برای دولوپرها فراهم می‌کند تا بتوانند کدی بنویسند که بدون اعمال تغییر در سورس‌کد اصلی، قابلیت توسعه داشته باشد.

دانلود فایل‌های تمرین

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان