جاوید ستار | Javid Sattar
جاوید ستار | Javid Sattar
خواندن ۲ دقیقه·۶ ماه پیش

دیزاین پترن‌ها در اندروید، الگوهای Structural


در مقاله قبلی، به بررسی و توضیح الگوهای Creational پرداختیم که به فرآیند ایجاد اشیاء کمک می‌کنند. در این مقاله، به دسته دیگری از دیزاین پترن‌ها به نام الگوهای Structural (ساختاری) خواهیم پرداخت. این الگوها به نحوه ترکیب و ساختاردهی اشیاء و کلاس‌ها برای ایجاد ساختارهای بزرگ‌تر و پیچیده‌تر می‌پردازند. استفاده از این الگوها می‌تواند به بهبود خوانایی، انعطاف‌پذیری و قابلیت نگهداری کد کمک کند.

دسته‌بندی Structural (ساختاری)

الگوهای Structural بر ترکیب اشیاء و کلاس‌ها برای تشکیل ساختارهای بزرگ‌تر تمرکز دارند. در این مقاله، به معرفی و توضیح سه الگوی پرکاربرد در این دسته می‌پردازیم: Adapter، Decorator و Composite.

الگوی Adapter (مبدل)

الگوی Adapter به ما اجازه می‌دهد تا اینترفیس یک کلاس موجود را به یک اینترفیس مورد انتظار تبدیل کنیم. این الگو زمانی مفید است که دو کلاس ناسازگار داریم که باید با هم کار کنند.

مثال:

فرض کنید در یک اپلیکیشن اندرویدی، نیاز داریم تا از یک کتابخانه خارجی برای نمایش تصاویر استفاده کنیم. این کتابخانه از اینترفیس خاصی برای بارگذاری تصاویر استفاده می‌کند که با اینترفیس مورد استفاده ما سازگار نیست.

در این مثال، کلاس ImageLoaderAdapter اینترفیس ImageLoader را پیاده‌سازی می‌کند و از یک نمونه ExternalImageLoader برای بارگذاری تصویر استفاده می‌کند.


الگوی Decorator (تزئین‌کننده)

الگوی Decorator به ما اجازه می‌دهد تا به صورت پویا به یک شیء قابلیت‌های جدید اضافه کنیم بدون اینکه به کلاس‌های موجود تغییراتی اعمال کنیم. این الگو برای افزودن ویژگی‌ها و رفتارهای اضافی به اشیاء به صورت انعطاف‌پذیر مفید است.

مثال:

فرض کنید در یک اپلیکیشن اندرویدی، نیاز داریم تا به یک TextView قابلیت‌های اضافی مانند حاشیه و رنگ پس‌زمینه اضافه کنیم.

برای افزودن حاشیه و رنگ پس‌زمینه

استفاده از الگوی Decorator در اکتیویتی

در این مثال، کلاس‌های BorderedTextView و BackgroundTextView به عنوان Decorator عمل می‌کنند و قابلیت‌های جدیدی به TextView اضافه می‌کنند.


الگوی Composite (ترکیبی)

الگوی Composite به ما اجازه می‌دهد تا اشیاء را به صورت سلسله‌مراتبی ترکیب کنیم و به این ترتیب بتوانیم با مجموعه‌ای از اشیاء به عنوان یک شیء واحد رفتار کنیم. این الگو برای ساختاردهی اشیاء به صورت درختی مفید است.

مثال:

فرض کنید در یک اپلیکیشن اندرویدی، می‌خواهیم یک ساختار سلسله‌مراتبی از منوهای کشویی (Drawer Menu) را ایجاد کنیم.

ابتدا اینترفیس MenuComponent را تعریف می‌کنیم

سپس کلاس MenuItem را که نمایانگر یک آیتم منو است، تعریف می‌کنیم

حالا کلاس Menu را که نمایانگر یک منوی ترکیبی از چندین آیتم منو است، تعریف می‌کنیم

حالا می‌توانیم از الگوی Composite برای ساختاردهی منوها در اکتیویتی خود استفاده کنیم

در این مثال:

کلاسMenuItem نمایانگر یک آیتم منو است که متد showMenu را پیاده‌سازی می‌کند.

کلاسMenu نمایانگر یک منوی ترکیبی است که می‌تواند شامل چندین MenuComponent باشد

متدshowMenu را برای نمایش آیتم‌های منو پیاده‌سازی می‌کند.


نتیجه‌گیری

استفاده از الگوهای Structural (ساختاری) می‌تواند به بهبود خوانایی، انعطاف‌پذیری و قابلیت نگهداری کد کمک کند.

هدفم از نوشتن این مقاله معرفی و استفاده برخی از کاربردی‌ترین دیزاین پترن‌های Structural و نحوه به کارگیری آنها با مثال های اندرویدی بود.

دیزاین پترن‌ها در اندروید، الگوهای Creational

دیزاین پترن‌ها در اندروید، الگوهای Behavioral


ممنون از زمانی که گذاشتین :))
خدانگهدارتون

اندرویددیزاین پترنکد تمیزاپلیکیشن موبایل
برنامه نویس اندروید
شاید از این پست‌ها خوشتان بیاید