این الگوها بر نحوه ایجاد اشیاء تمرکز دارند. هدف اصلی آنها جدا کردن فرآیند ایجاد شیء از سیستم اصلی است.
الگوی تکنمونه (Singleton)
این الگو تضمین میکند که از یک کلاس، تنها و تنها یک شیء در کل طول اجرای برنامه (AppDomain) وجود داشته باشد.
کاربرد: دسترسی به دیتابیس، سیستمهای لاگ (Logging)، یا تنظیمات کلی برنامه.
پیادهسازی در سیشارپ: استفاده از کلمه کلیدی static و مدیریت Thread Safety.
public sealed class Logger
{
private static readonly Logger _instance = new Logger();
private Logger() { } // جلوگیری از ایجاد نمونه توسط دیگران
public static Logger Instance => _instance;
public void Log(string message) => Console.WriteLine(message);
}
این الگو واسطی برای ایجاد اشیاء تعریف میکند، اما اجازه میدهد زیرکلاسها تصمیم بگیرند که کدام کلاس را نمونهسازی کنند.
کاربرد: وقتی برنامه شما باید با انواع مختلفی از یک شیء (مثلاً انواع کارتهای اعتباری یا انواع فایلها) کار کند.
این الگوها به نحوه ترکیب کلاسها و اشیاء برای تشکیل ساختارهای بزرگتر میپردازند.
الگوی آداپتور (Adapter)
آداپتور به کلاسهایی که رابطهای ناسازگار دارند اجازه میدهد با هم کار کنند. این الگو مانند یک تبدیلبرق عمل میکند.
کاربرد: استفاده از کتابخانههای قدیمی (Legacy) در پروژههای جدید یا یکپارچهسازی سرویسهای شخص ثالث (Third-party).
الگوی نما (Facade)
الگوی Facade یک رابط ساده و سطح بالا برای یک سیستم پیچیده و مجموعهای از کلاسها فراهم میکند.
کاربرد: وقتی با یک زیرسیستم بسیار پیچیده (مثل کتابخانههای گرافیکی یا پردازشهای مالی چندمرحلهای) روبرو هستید و میخواهید کاربر فقط با یک متد ساده کار را انجام دهد.
نکته: Facade پیچیدگی را مخفی میکند، اما آن را از بین نمیبرد.
این الگوها بر تعامل و ارتباط بین اشیاء تمرکز دارند.
الگوی ناظر (Observer)
این الگو رابطهای یکبهچند ایجاد میکند؛ به طوری که وقتی وضعیت یک شیء تغییر کرد، تمام وابستگان آن باخبر شده و بهروزرسانی میشوند.
در سیشارپ: این الگو به طور ذاتی در زبان سیشارپ از طریق Events و Delegates پیادهسازی شده است.
الگوی استراتژی (Strategy)
این الگو به شما اجازه میدهد مجموعهای از الگوریتمها را تعریف کنید، هر کدام را کپسولهسازی کنید و آنها را در زمان اجرا (Runtime) با هم جایگزین کنید.
کاربرد: فرض کنید یک سیستم پرداخت دارید که کاربر میتواند بین "پرداخت بانکی"، "پیپال" و "بیتکوین" یکی را انتخاب کند.
| ویژگی | توضیحات |
| انعطافپذیری | بالا؛ به راحتی الگوریتمهای جدید اضافه میشوند. |
| خوانایی | جلوگیری از دستورات شرطی (if-else یا switch) طولانی. |
| الگوی طراحی | دسته بندی | هدف اصلی |
| Singleton | سازنده | محدود کردن تعداد نمونه به عدد یک |
| Adapter | ساختاری | هماهنگ کردن دو رابط ناسازگار |
| Observer | رفتاری | اطلاعرسانی تغییرات به سایر اشیاء |
| Strategy | رفتاری | تغییر رفتار شیء در زمان اجرا |
| Builder | سازنده | ساخت مرحلهبهمرحله اشیاء پیچیده |
یادگیری الگوهای طراحی سفری است که از شما یک "کدنویس" معمولی به یک "معمار نرمافزار" تبدیل میکند. در سیشارپ، به دلیل ویژگیهایی مثل Genericها، Interfaceها و Eventها، پیادهسازی این الگوها بسیار لذتبخش و کارآمد است.
با این حال، به یاد داشته باشید: در استفاده از الگوها زیادهروی نکنید (Over-engineering). همیشه سادگی کد را در اولویت قرار دهید و تنها زمانی از الگو استفاده کنید که واقعاً به آن نیاز دارید.
0 نظر
هنوز نظری برای این مقاله ثبت نشده است.