HamidReza Ireh

حمیدرضا ایره

HamidReza Ireh

حمیدرضا ایره

۸ مطلب در تیر ۱۳۹۵ ثبت شده است

حوزه: Object / Class
هدف: Structural
نقش الگو
همان گونه که از اسم این الگو مشخص است، هنگامی که دو کلاس واسط(Interface) های غیرمرتبط با یکدیگر داشته باشند این الگو واسط یکی را به دیگری تبدیل می‌کند که بتوانند با یکدیگر ارتباط برقرار کند. از این الگو که یک الگوی ساختاری است زمانی استفاده می‌شود که بخواهیم در یک برنامه، دو کلاس غیرمرتبط با یکدیگر کار کنند.

DRY مخفف Don’t repeat yourself به معنی خودت را تکرار نکن! اما چرا باید در برنامه نویسی این اصل را رعایت کرد؟ وقتی شما مجبور شدید برای اصلاح یک قسمت از برنامه، چند قسمت از کدتان را تغییر بدید، دقیقا برعکس DRY عمل کرده‌اید. بیایید فرض کنیم که یک وب سایت یا برنامه نوشتیم که در چند بخش مختلف آن فرم ثبت نام مشابه داره.

مقدمه
SOLID مخفف چند مفهوم مختلف هست که فهم این مطالب میتواند شما را در هنر برنامه نویسی به سطح پیشرفته‌تری برساند.
S مخفف Single responsibility principle یا SRP به معنی اینکه هر کلاس بایستی فقط یک کار انجام دهد نه بیشتر.
O مخفف Open/closed principle یا OCP به معنی اینکه کلاس‌ها جوری نوشته بشن که قابل گسترش باشند اما نیاز به تغییر نداشته باشند.

حوزه: Object

هدف: Creational

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

حوزه: Object

هدف: Creational

نقش الگو
همانطور که در الگوی طراحی Factory Method مشاهده شد، این الگو یک عیب دارد، آن هم این است که از کدام Creator باید استفاده شود و مستقیما در کد بایستی ذکر شود. برای حل این مشکل می‌توانیم سراغ الگوی طراحی دیگری برویم که Abstract Factory نام دارد. این الگوی طراحی 4 بخش اصلی دارد.

حوزه: Class

هدف: Creational

نقش الگو
این الگو پیچیدگی ایجاد اشیاء برای استفاده کننده را پنهان می‌کند. ما با این الگو میتوانیم بدون اینکه کلاس دقیق یک شیئ را مشخص کنیم آن را ایجاد و از آن استفاده کنیم. کلاینت ( استفاده کننده ) معمولا شیئ واقعی را ایجاد نمی‌کند بلکه با یک واسط و یا کلاس انتزاعی (Abstract) در ارتباط است و کل مسئولیت ایجاد کلاس واقعی را به Factory Method می‌سپارد. کلاس Factory Method می‌تواند استاتیک باشد . کلاینت معمولا اطلاعاتی را به متدی استاتیک از این کلاس می‌فرستد و این متد بر اساس آن اطلاعات تصمیم می‌گیرید که کدام یک از پیاده سازی‌ها را برای کلاینت برگرداند.