برنامه نویس اندروید - https://www.linkedin.com/in/iryebohs/
الگویِ طراحیِ Decorator (جاوا و کاتلین)
یکی از الگوهایِ طبقه Structural ، الگویِ Decorator هست ، اگه بخوام ترجمه فارسیشو بگم باید بگم "تزئین کننده" ، در این الگو شما میتونید یک کلاس رو تزئین کنید ! یعنی چی ؟ یعنی بهش Functionality های جدید اضافه کنید ، شاید تا اینجا بگید مگه این کار رو با ارث بری انجام نمیدیم ؟ قبل از توضیح به شِمایِ کلیِ این الگو دقت کنید :
ما در Decorator یک Component داریم که یک interface یا abstract class هست که باقی کلاسهامون قراره از اون مشتق بشن ، مثلا فرض کنید کلاسِ "میوه" اون کلاس مدنظرِ ماست ، حالا ConcreteComponent میشه کلاسی مثل "پرتقال" ، Decorator یک abstract class هست که از Component مشتق میشه و در عین حال یک Component رو درون خودش هم داره (یک متغیر از جنس Component عضو اونه) ، ConcreteDecorator هم کلاسهایی میشن که از Decorator مشتق شدن ، با با استفاده از Decorator میـونیم خواصِ جدیدی به کلاس Component اضافه کنیم ، ولی چرا از ارث بریِ خالی استفاده نمیکنیم ، برگردیم به مثال "میوه" و "پرتقال" ، فرض کنید میخوایم "پرتقالِ خونی" ، "پرتقالِ تامسون" ، "پرتقالِ گنده" و ... رو داشته باشیم ، یک راهِ حل اینه که "پرتقالِ خونی" از "پرتقال" ارث ببره ، مشکل چیه ؟ مشکل زمانی پیش میاد که بخوایم پرتقال هم خونی باشه هم تامسون ! اون وقت باید دوباره یک کلاسِ جدید به اسم "پرتقالِ خونی و تامسون" ایجاد کنیم و الی آخر ! اما اگه از Decorator استفاده کنیم چون در Decorator هم از خودِ Component متشق شده و هم یک عضو از Component داره میتونیم سه تا Component برای "خونی" ، "تامسون" و "گنده" بسازیم و اونا رو تو در تو به عنوان ورودیِ هم بدیم و این طوری هر سه ویژگی رو داشته باشیم :
صورت مساله
همین مثال بالا رو به صورت کد در بیارید
و بعد خیلی راحت ازش استفاده کنید :
و خروجی این میشه : Orange Bloody Thompson Big
باقی مقالات در مورد الگویهای طراحی رو در این مقاله بخونید .
من رو در لینکدین و اینستاگرام دنبال کنید ???
اگه دوست داشتید میتونید به صفحه Spotify بنده هم برید و موسیقی های منو گوش بدید ???
مطلبی دیگر از این انتشارات
Handle Unhandled Exceptions مدیریت خطاهای مدیریت نشده
مطلبی دیگر از این انتشارات
نگاهی عمیق به مباحث جاوا با Java Zone
مطلبی دیگر از این انتشارات
کامیتهای مخزن گیت خود را امضا کنید.