Table of Contents
الگوی Decorator یک الگوی طراحی قدرتمند در برنامه نویسی شی گرا است که به توسعه دهندگان اجازه می دهد تا قابلیت های جدیدی را به اشیاء موجود به صورت پویا اضافه کنند، این الگو به ویژه هنگامی مفید است که شما می خواهید رفتار اشیاء را بدون تغییر کد منبع اصلی خود گسترش دهید.
درک الگوی Decorator
ایده اصلی پشت الگوی Decorator ایجاد یک بسته بندی در اطراف یک شی است که به عنوان یک ⁇ شناخته می شود که رفتارهای جدید یا مسئولیت ها را اضافه می کند.این رویکرد باعث تقویت قابلیت بازیابی کد می شود و به اصل Open / Closed پایبند است، به این معنی که کلاس ها برای تمدید باز هستند اما برای اصلاح بسته شده اند.
چگونه کار می کند
در عمل، الگوی Decorator شامل سه جزء اصلی است:
- [[۱] [۱۰] [[۱]] [۱] [۱]] [۱]] [۱]] [۱] [۱]] رابط کاربری یا کلاس انتزاعی، ویژگی های اصلی را تعریف می کند.
- اجزای دفع کننده: شی اصلی که رابط جزء را پیاده سازی می کند.
- [[۱] [۱۰] [[۱۰]] [[۱]]] [[۱]]]] یک کلاس انتزاعی که رابط کاربری جزء را پیاده سازی می کند و شامل یک مرجع به یک شیء جزء است.
دکوراسیون های بتنی کلاس ⁇ را گسترش می دهند تا ویژگی ها یا رفتارهای خاصی را اضافه کنند.این تنظیم اجازه می دهد تا چندین ⁇ را به کار گیرند و هر کدام قابلیت های خود را اضافه می کنند.
مزایای استفاده از الگوی Decorator
- [در این باره]: [[[۱]] [۱۰] [۱]] [۱]] [۱۰] [۱]] [۱] [۱]] [۱]] [۱] [۱]] [۱۰] [۱]] [۱] [۱]] [۱]] [۱] [۱]] [۱]] [۲] [۱]] [۱] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۱]] [۲] [۱]] [۲] [۲]]]]] [۲]]] [۲] [۲] [۲] [۲]]]] [۱]]] [۲] [۱] [۲] [۲] [۲] [۲] [۲]] [۱] [۱] [۱] [۲]]]]] [۲] [۲] [۲] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۲] [۲] [۲] [۲] [۲]]]]]] [۲] [۲]]] [۲] [۲
- قابلیت استفاده: کد ارتقاء با ایجاد دکوراسیون مجدد استفاده می شود.
- [در این میان] [از این رو]، [[[۱]]] [۱۰] [۱]] [۱]] [۱]] [۱]] [۱]] [۱] [۱]] [۱]] [۵]] [۵] [۱]] [۱] [۱] [۱]] [۱] [۱] [۵] [۱] [۵] [۵] [۱] [۵] [۵] [۵] [۵] [۵] [۵] [۵] [۵] [۱] [۱] [۱] [۱] [۵] [۵] [۵] [۳] [۵] [۵]]]]]] [۱] [۳] [۳] [۱] [۱] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [براى [۳] [۳] [براى [۳] [براى [براى [براى [براى [براى [براى [۳] [۳] [براى [براى [براى [براى [براى [براى [براى [
- باز / Closed اصل: [FLT 1] توابع را بدون تغییر کد موجود گسترش دهید.
مثال عملی
فرض کنید یک شی پنجره پایه در یک برنامه GUI دارید، می خواهید به جای تغییر کلاس پنجره، اسکرول یا مرزها را به صورت پویا اضافه کنید.
در اینجا یک تصویر ساده است:
رابط کاربری Interface
روش هایی را تعریف می کند که همه اشیاء، از جمله دکوراسیون، باید پیاده سازی کنند.
اجزای بتنی
شی پنجره اصلی که توابع اصلی را فراهم می کند.
بازیگران Decorator
کلاس هایی که ویژگی هایی مانند اسکرول یا مرزها را با بستن شی پنجره اضافه می کنند.
نتیجه گیری
الگوی Decorator یک راه انعطاف پذیر برای گسترش عملکرد های شی به طور پویا ارائه می دهد.با استفاده از ⁇ ها، توسعه دهندگان می توانند کد پایه خود را تمیز، قابل نگهداری و سازگار با الزامات در حال تغییر نگه دارند.این الگو به طور گسترده در توسعه UI، پردازش جریان و بسیاری از دامنه های دیگر که علاوه بر ویژگی انعطاف پذیر ضروری است استفاده می شود.