Repository Pattern
Repository فقط وقتی استفاده میشود که query یا persistence logic ارزش جدا شدن از service یا model را داشته باشد.
موارد مناسب
- queryهای پیچیده و پرتکرار
- filter و sort چندگانه
- persistence پشت contract مشخص
- جدا کردن query از use case سنگین
موارد نامناسب
- wrapper ساده برای
Model::query() - repository برای هر model بدون نیاز واقعی
- مخفی کردن همه قابلیتهای Eloquent پشت abstraction ضعیف
قواعد
- repository نباید response بسازد
- repository نباید permission تصمیم بگیرد مگر contract آن access scoped باشد
- methodها باید business-readable باشند
- pagination و eager loading باید آگاهانه طراحی شوند