# Repository Pattern (Laravel) > Repository pattern (trade-off, trường hợp sử dụng), contracts, service layer, nguyên tắc SOLID, dependency inversion, khả năng kiểm thử, khi nào KHÔNG nên dùng - 20 câu hỏi phỏng vấn - Senior - [Câu hỏi phỏng vấn: Laravel](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van.md) ## 1. Repository Pattern trong Laravel là gì? **Câu trả lời** Repository Pattern là một design pattern bổ sung một lớp trừu tượng giữa logic nghiệp vụ và lớp dữ liệu. Nó đóng gói logic truy cập dữ liệu trong các lớp chuyên dụng (repositories), cho phép tách biệt trách nhiệm và làm cho mã dễ kiểm thử hơn. Khác với việc dùng Eloquent trực tiếp trong controllers, repository tập trung hóa các truy vấn phức tạp và giúp dễ dàng thay đổi nguồn dữ liệu mà không ảnh hưởng đến phần còn lại của ứng dụng. ## 2. Repository Pattern mang lại giá trị lớn nhất trong tình huống nào? **Câu trả lời** Repository Pattern đặc biệt hữu ích trong các ứng dụng phức tạp với những truy vấn tinh vi và nhiều nguồn dữ liệu. Nó tỏa sáng trong các dự án doanh nghiệp nơi logic truy cập dữ liệu phức tạp, được tái sử dụng ở nhiều nơi, hoặc có khả năng thay đổi (ví dụ: di chuyển từ MySQL sang MongoDB). Đối với các CRUD đơn giản hoặc ứng dụng nhỏ, nó có thể trở thành sự thiết kế quá mức không cần thiết. ## 3. Trade-off chính của Repository Pattern là gì? **Câu trả lời** Trade-off chính là sự gia tăng độ phức tạp của mã và số lượng tệp cần bảo trì. Mỗi repository thêm ít nhất 2 tệp (interface + triển khai), điều này có thể nhanh chóng trở nên dài dòng trong các ứng dụng đơn giản. Laravel Eloquent vốn đã là một lớp trừu tượng mạnh mẽ giải quyết 80% các trường hợp sử dụng, và việc thêm một lớp bổ sung có thể làm chậm quá trình phát triển mà không mang lại lợi ích thực sự nếu các truy vấn vẫn đơn giản. ## Còn 17 câu hỏi nữa - Repository Pattern áp dụng nguyên tắc SOLID Dependency Inversion như thế nào? - Lợi thế chính của Repository Pattern đối với việc kiểm thử là gì? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Laravel khác - [Cơ bản về PHP](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/php-basics.md): 25 câu hỏi, Junior - [Kiến thức cơ bản về OOP trong PHP](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/php-oop-essentials.md): 20 câu hỏi, Junior - [Composer & Autoloading](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/composer-autoloading.md): 18 câu hỏi, Junior - [Kiến thức cơ bản về Laravel](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/laravel-fundamentals.md): 20 câu hỏi, Junior - [Routing trong Laravel](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/laravel-routing.md): 20 câu hỏi, Junior - [Blade Templates](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/blade-templates.md): 18 câu hỏi, Junior - [Request & Response](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/request-response.md): 20 câu hỏi, Junior - [Kiến thức cơ bản về Eloquent ORM](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/eloquent-orm-basics.md): 22 câu hỏi, Junior - [Eloquent Relationships](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/eloquent-relationships.md): 25 câu hỏi, Mid-Level - [Migrations & Schema Builder](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/database-migrations.md): 20 câu hỏi, Mid-Level - [Xác thực và Form](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/validation-forms.md): 22 câu hỏi, Mid-Level - [Xác thực](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/authentication.md): 20 câu hỏi, Mid-Level - [Phân quyền và Policies](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/authorization-policies.md): 18 câu hỏi, Mid-Level - [API Resources & Authentication](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/api-resources-authentication.md): 26 câu hỏi, Mid-Level - [Middleware](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/middleware.md): 18 câu hỏi, Mid-Level - [Service Container & DI](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/service-container-di.md): 20 câu hỏi, Mid-Level - [Queues & Jobs](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/queues-jobs.md): 22 câu hỏi, Mid-Level - [Events & Listeners](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/events-listeners.md): 18 câu hỏi, Mid-Level - [Thông báo & Mail](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/notifications-mail.md): 20 câu hỏi, Mid-Level - [File Storage](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/file-storage.md): 18 câu hỏi, Mid-Level - [Testing & PHPUnit](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/testing-phpunit.md): 24 câu hỏi, Mid-Level - [Caching](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/caching.md): 18 câu hỏi, Mid-Level - [Livewire & Inertia](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/livewire-inertia.md): 20 câu hỏi, Mid-Level - [Eloquent Advanced](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/eloquent-advanced.md): 24 câu hỏi, Senior - [Laravel Packages](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/laravel-packages.md): 20 câu hỏi, Senior - [Performance Optimization](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Security Best Practices](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/security-best-practices.md): 22 câu hỏi, Senior - [Laravel Octane](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/laravel-octane.md): 18 câu hỏi, Senior - [Laravel Distributed Systems](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/laravel-distributed-systems.md): 22 câu hỏi, Senior - [Observability & Monitoring](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/observability-monitoring.md): 20 câu hỏi, Senior - [Deployment & DevOps](https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/deployment-devops.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/laravel/cau-hoi-phong-van/repository-pattern