الگوهای طراحی - Design Patterns
Design Patterns مجموعهای از راهکارهای اثباتشده برای حل مشکلات رایج در طراحی نرمافزار هستند. این الگوها به توسعهدهندگان کمک میکنند تا کدهای قابل نگهداری، مقیاسپذیر و خوانا بنویسند.
الگوهای طراحی معمولاً به سه دسته تقسیم میشوند:
این الگوها به ایجاد اشیا کمک میکنند و نحوهی نمونهسازی را بهینه میکنند.
- Singleton → محدود کردن ایجاد نمونهای از یک کلاس به یک شیء واحد.
- Factory Method → ایجاد اشیا بدون مشخص کردن کلاس دقیق آنها.
- Abstract Factory → ایجاد گروهی از اشیا مرتبط بدون تعیین کلاسهای آنها.
- Builder → جدا کردن ساختار پیچیدهی یک شی از نحوهی ایجاد آن.
- Prototype → ایجاد اشیا جدید با استفاده از کپی نمونههای موجود.
این الگوها چگونگی ترکیب کلاسها و اشیا را مشخص میکنند.
- Adapter → تبدیل یک اینترفیس به اینترفیس دیگر برای سازگاری با سیستم.
- Bridge → جداسازی بخش انتزاعی (Abstract) از پیادهسازی (Implementation).
- Composite → ترکیب اشیا در ساختاری درختی برای استفادهی یکسان از تک اشیا و گروهی از آنها.
- Decorator → اضافه کردن قابلیت به کلاسها بدون تغییر در ساختار اصلی.
- Facade → فراهم کردن یک رابط ساده برای مجموعهای از کلاسهای پیچیده.
- Flyweight → استفادهی بهینه از حافظه با به اشتراکگذاری اشیای مشابه.
- Proxy → ایجاد یک واسطه برای کنترل دسترسی به یک شی.
این الگوها نحوهی تعامل بین اشیا را تعریف میکنند.
- Observe r → الگویی که امکان اطلاع رسانی خودکار تغییرات در یک شیء به سایر بخشهای سیستم را فراهم میکند. این الگو در سیستمهایی که نیاز به هماهنگی بین اجزا دارند، مفید است.
- Strategy → جداسازی الگوریتمهای مختلف و انتخاب آنها در زمان اجرا.
- Command → کپسوله کردن یک درخواست بهعنوان یک شیء مستقل.
- Mediator → کنترل تعامل بین اشیا بدون نیاز به ارتباط مستقیم آنها.
- Memento → نگهداری وضعیت یک شی برای بازگرداندن آن در آینده.
- State → تغییر رفتار یک شی براساس وضعیت آن.
- Template Method → تعریف یک اسکلت کلی برای الگوریتم و اجازهی تغییر بخشهایی از آن.
- Chain of Responsibility → ارسال درخواست در زنجیرهای از پردازشگرها تا یکی از آنها پاسخ دهد.
- Iterator → ارائه راهی استاندارد برای پیمایش در مجموعهها.
- Visitor → اضافه کردن قابلیتهای جدید بدون تغییر در کلاسهای موجود.
در Laravel و Filament برخی از این الگوها بهشدت کاربردی هستند:
✅ Singleton → در Service Providers برای جلوگیری از ایجاد چندین نمونه از یک سرویس.
✅ Factory Method → در Eloquent Factories برای ایجاد مدلها در تستها.
✅ Observer → در Eloquent برای گوش دادن به رویدادهای مدلها.
✅ Repository Pattern → جداسازی منطق پایگاه داده از کنترلرها.
✅ Strategy → پیادهسازی استراتژیهای مختلف برای پرداخت، احراز هویت و ...