Laravel

Repository Pattern

Repository pattern (ข้อแลกเปลี่ยน, กรณีการใช้งาน), contracts, service layer, หลักการ SOLID, dependency inversion, ความสามารถในการทดสอบ, เมื่อใดที่ไม่ควรใช้

20 คำถามสัมภาษณ์·
Senior
1

Repository Pattern ใน Laravel คืออะไร?

คำตอบ

Repository Pattern เป็น design pattern ที่เพิ่มเลเยอร์การแยกส่วน (abstraction) ระหว่างลอจิกธุรกิจกับเลเยอร์ข้อมูล โดยห่อหุ้มลอจิกการเข้าถึงข้อมูลไว้ในคลาสเฉพาะ (repositories) ทำให้สามารถแยกความรับผิดชอบและทำให้โค้ดทดสอบได้ง่ายขึ้น ต่างจากการใช้ Eloquent โดยตรงใน controllers ตรงที่ repository รวมศูนย์ query ที่ซับซ้อนและทำให้เปลี่ยนแหล่งข้อมูลได้ง่ายโดยไม่กระทบส่วนอื่นของแอปพลิเคชัน

2

Repository Pattern ให้คุณค่ามากที่สุดในสถานการณ์ใด?

คำตอบ

Repository Pattern มีประโยชน์อย่างยิ่งในแอปพลิเคชันที่ซับซ้อนซึ่งมีคิวรีที่ซับซ้อนและแหล่งข้อมูลหลายแหล่ง มันโดดเด่นในโปรเจกต์ระดับองค์กรที่ตรรกะการเข้าถึงข้อมูลมีความซับซ้อน ถูกใช้ซ้ำในหลายที่ หรือมีแนวโน้มที่จะเปลี่ยนแปลง (เช่น การย้ายจาก MySQL ไปยัง MongoDB) สำหรับ CRUD ง่าย ๆ หรือแอปพลิเคชันขนาดเล็ก อาจกลายเป็นการออกแบบที่เกินความจำเป็นโดยไม่จำเป็น

3

trade-off หลักของ Repository Pattern คืออะไร?

คำตอบ

trade-off หลักคือความซับซ้อนของโค้ดที่เพิ่มขึ้นและจำนวนไฟล์ที่ต้องดูแลรักษา แต่ละ repository เพิ่มไฟล์อย่างน้อย 2 ไฟล์ (interface + การนำไปใช้) ซึ่งอาจกลายเป็นเยิ่นเย้อได้อย่างรวดเร็วในแอปพลิเคชันที่เรียบง่าย Laravel Eloquent เป็นการแยกนามธรรมที่ทรงพลังอยู่แล้วซึ่งแก้ไขกรณีการใช้งานได้ 80% และการเพิ่มเลเยอร์พิเศษอาจทำให้การพัฒนาช้าลงโดยไม่มีประโยชน์ที่แท้จริงหากคิวรียังคงเรียบง่าย

4

Repository Pattern นำหลักการ SOLID Dependency Inversion ไปใช้อย่างไร?

5

ข้อได้เปรียบหลักของ Repository Pattern สำหรับการทดสอบคืออะไร?

+17 คำถามสัมภาษณ์

หัวข้อสัมภาษณ์ Laravel อื่นๆ

พื้นฐาน PHP

Junior
25 คำถาม

พื้นฐาน OOP ใน PHP

Junior
20 คำถาม

Composer & Autoloading

Junior
18 คำถาม

พื้นฐาน Laravel

Junior
20 คำถาม

Laravel Routing

Junior
20 คำถาม

Blade Templates

Junior
18 คำถาม

Request & Response

Junior
20 คำถาม

พื้นฐาน Eloquent ORM

Junior
22 คำถาม

Eloquent Relationships

Mid-Level
25 คำถาม

Migrations & Schema Builder

Mid-Level
20 คำถาม

การตรวจสอบและฟอร์ม

Mid-Level
22 คำถาม

การยืนยันตัวตน

Mid-Level
20 คำถาม

การให้สิทธิ์และ Policies

Mid-Level
18 คำถาม

API Resources & Authentication

Mid-Level
26 คำถาม

Middleware

Mid-Level
18 คำถาม

Service Container & DI

Mid-Level
20 คำถาม

Queues & Jobs

Mid-Level
22 คำถาม

Events & Listeners

Mid-Level
18 คำถาม

การแจ้งเตือนและเมล

Mid-Level
20 คำถาม

File Storage

Mid-Level
18 คำถาม

Testing & PHPUnit

Mid-Level
24 คำถาม

Caching

Mid-Level
18 คำถาม

Livewire & Inertia

Mid-Level
20 คำถาม

Eloquent Advanced

Senior
24 คำถาม

Laravel Packages

Senior
20 คำถาม

Performance Optimization

Senior
22 คำถาม

Security Best Practices

Senior
22 คำถาม

Laravel Octane

Senior
18 คำถาม

Laravel Distributed Systems

Senior
22 คำถาม

Observability & Monitoring

Senior
20 คำถาม

Deployment & DevOps

Senior
20 คำถาม

เชี่ยวชาญ Laravel สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี