الگوی آذینگر. در برنامه نویسی شئ گرا، الگوی آذینگر یا دکوراتر ( decorator ) یک الگوی طراحی است که امکان افزودن رفتار ( behavior ) به یک شئ، را به طور پویا ( dynamic ) یا ایستا ( static ) فراهم می سازد بی آنکه رفتار اشیاء دیگر از همان کلاس ( که شیء مورد بحث از آن ساخته شده ) دست خوش تغییر شوند. [ ۱] الگوی طراحی آذینگر معمولاً برای پایبندی به قاعدهٔ تک وظیفه ای مورد استفاده قرار می گیرد چرا که این الگوی طراحی، امکان تقسیم عملکردها ( functionality ) بین کلاس های مختلف که هر کدام دغدغه های ( concern ) خاص را پوشش می دهند، فراهم می سازد. [ ۲] به عنوان یک مثال اولیه برای آشنایی بیشتر با این الگو، یک کلاس را در نظر بگیرید که یک رشته را در ورودی دریافت می کند و صرفا آن را در خروجی نمایش می دهد. حالا می توانیم با استفاده از الگوی آذینگر، کارایی های دیگری ( نظیر spell checking و یا highlight کردن متن ) به این کلاس اضافه کنیم بدون اینکه رفتار اولیه این کلاس عوض شود و تغییری کند. این کار از طریق نوشتن یک سری تابع کمکی و در نهایت پیچیدن تابع اولیه ( wrapping ) با این تابع های جدید انجام می شود.
به منظور گسترش ( آذین کردن ) عملکرد یک شئ به صورت ایستا یا بعضی مواقع به صورت پویا، در زمان اجرا ( Runtime ) و به طور مستقل از اشیاء دیگر همان کلاس، از الگوی طراحی آذینگر استفاده می شود. این مهم از طریق ایجاد یک کلاس آذینگر یا کلاس پیچه، که کلاس اصلی ( کلاسی که می خواهیم عملکردش را آذین کنیم ) ، در آن پیچیده می گردد، برقرار می شود. این عمل پیچیدن کلاس اصلی در کلاس آذینگر از طریق مراحل زیر انجام می شود:
• ایجاد یک زیر کلاسِ آذینگر از کلاس اصلی
• افزودن یک اشاره گر به صورت فیلد ( field ) که به کلاس اصلی اشاره می کند.
• ارسال یک شئ از طریق سازنده ( constructor ) به فیلد برای مقدار دهی به اشاره گر.
• در کلاس آذینگر از تمام متدهای ( Method ) کلاس آذین شده یا همان کلاس اصلی باید استفاده کرد.
• در کلاس آذینگر، هر متد از کلاس اصلی را که می بایست عملکردش اصلاح شود ( گسترش یابد ) باید override کرد.
این الگو طراحی شده است تا چندین آذینگر به راحتی بتوانند برهم سوار شوند ( دور هم بپیچند ) و هر بار که یک آذینگر به دور آذینگر دیگر می پیچد، یک عملکرد جدید به متدهای override شده افزوده می شود.
باید دقت شود که آذینگرها و کلاس اصلی مجموعه ای از ویژگی ها را به اشتراک می گذراند. در شکل قبل، اسلوب ( متد ) operation ( ) هم در کلاس های آذین شده و هم درکلاس های آذین نشده حضور دارد.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفبه منظور گسترش ( آذین کردن ) عملکرد یک شئ به صورت ایستا یا بعضی مواقع به صورت پویا، در زمان اجرا ( Runtime ) و به طور مستقل از اشیاء دیگر همان کلاس، از الگوی طراحی آذینگر استفاده می شود. این مهم از طریق ایجاد یک کلاس آذینگر یا کلاس پیچه، که کلاس اصلی ( کلاسی که می خواهیم عملکردش را آذین کنیم ) ، در آن پیچیده می گردد، برقرار می شود. این عمل پیچیدن کلاس اصلی در کلاس آذینگر از طریق مراحل زیر انجام می شود:
• ایجاد یک زیر کلاسِ آذینگر از کلاس اصلی
• افزودن یک اشاره گر به صورت فیلد ( field ) که به کلاس اصلی اشاره می کند.
• ارسال یک شئ از طریق سازنده ( constructor ) به فیلد برای مقدار دهی به اشاره گر.
• در کلاس آذینگر از تمام متدهای ( Method ) کلاس آذین شده یا همان کلاس اصلی باید استفاده کرد.
• در کلاس آذینگر، هر متد از کلاس اصلی را که می بایست عملکردش اصلاح شود ( گسترش یابد ) باید override کرد.
این الگو طراحی شده است تا چندین آذینگر به راحتی بتوانند برهم سوار شوند ( دور هم بپیچند ) و هر بار که یک آذینگر به دور آذینگر دیگر می پیچد، یک عملکرد جدید به متدهای override شده افزوده می شود.
باید دقت شود که آذینگرها و کلاس اصلی مجموعه ای از ویژگی ها را به اشتراک می گذراند. در شکل قبل، اسلوب ( متد ) operation ( ) هم در کلاس های آذین شده و هم درکلاس های آذین نشده حضور دارد.
wiki: الگوی آذینگر