گروه نرم افزاری هیلتن

موضوع کلی: الگو های طراحی

الگوی Decorator

Decorator Pattern



الگوی طراحی Decorator

این الگو یک سری ویژگی ها کلاس ها که مهمتر هستند را قابل گسترش می کند. به عبارتی دیگر این امکان را می دهد که علاوه بر تغییر متد های موجود بتوان متد جدید را در زمان اجرا اظافه نمود. در واقع روی کلاس ها کار نمی کند بلکه روی اشیای ساخته شده کار می کند. متد های یک شی را در زمان اجرا با استفاده از وراثت گسترش می دهد. برای مثال گرافیک ویندوز را در نظر بگیرید هر پنجره می تواند داخل پنجره ای دیگر باشد که در زمان اجرا این کار انجام می گیرد. هدف اصلی این الگو اضافه کردن مسئولیت ها یک شی در زمان اجرا است.

هدف: افزودن وضعیت یا رفتار جدید به صورت پویا

انگیزه: بعضی وقت ها می خواهیم یک قابلیت به یک کلاس بدهیم اما خودکلاس تغییر نکند.

کاربرد:
• جلوگیری از تکرار کد
• کلاس را سبک و ساد می کند
• قابلیت را به خود اشیا می افزاید نه به کلاس

ساختار: در زیر نمودار کلاس دیاگرام این الگو را می توان مشاهده نمود.
نمودار کلاس دیاگرام الگوی Decorator

نمودار کلاس دیاگرام الگو Decorator

اجزا:
Component: کلاس مجرد یا واسطی است که ساختار کلی ConcreteComponent ها را تعریف می کند.
ConcreteComponent: کلاسی که کلاس Component را پیاده سازی یا به ارث می برد.
Decorator: کلاس مجردی که ساختار تمام متد های افزودنی را دارد.

الگوهای مرتبط:
Strategy: در بیشتر شرایط از این الگو می توان به جای الگوی Decorator استفاده کرد.
Composite: این الگو را می توان حالت خاصی از الگوی Decorator دانست.

پیامد:
• برای تعریف ساختار کلی Componentها می توان از واسط نیز استفاده کرد.
نقاط قوت:
• انعطاف پزیری زیادی دارد
نقاط ضعف:
• می توان یک شی را چند بار به یک شی اضافه کرد. چون که راهی برای فهمیدن اینکه این شی را قبلا دریافت کرده است وجود ندارد.







گروه برنامه نویسی هیلتن

گروه برنامه نویسی هیلتن