Trong Laravel 12, “design pattern” không phải chỉ 1 cái duy nhất, mà là tổ hợp nhiều pattern được dùng để tổ chức code sạch, dễ mở rộng, dễ test.

Nếu bóc tách ra đúng bản chất thì Laravel đang dùng mấy nhóm chính sau:


1. MVC (Model - View - Controller) — nền tảng

Laravel vẫn xoay quanh MVC:

  • Model → xử lý data (Eloquent ORM)
  • View → Blade template
  • Controller → điều phối request

👉 Nhưng Laravel không phải MVC thuần, mà là “MVC + Service Layer + IoC”


2. IoC Container + Dependency Injection (Core quan trọng nhất)

Đây là cái làm Laravel “khác CI3 rõ rệt”

  • Laravel có Service Container (IoC Container)
  • Class không tự new dependency → mà được inject vào constructor

Ví dụ:

class UserController {
    public function __construct(UserService $userService) {
        $this->userService = $userService;
    }
}

👉 Laravel tự resolve UserService

Pattern đứng sau:

  • Dependency Injection
  • Inversion of Control (IoC)

👉 Đây là “xương sống” của Laravel


3. Service Container + Service Provider

Laravel dùng:

  • Service Provider để bind class vào container
  • Kiểu:
$this->app->bind(UserRepository::class, EloquentUserRepository::class);

👉 Pattern:

  • Service Locator (biến thể nhẹ)
  • Factory Pattern (ngầm)

4. Facade Pattern (rất Laravel-style)

Ví dụ:

Cache::get('key');
DB::table('users');

👉 Thực tế:

  • Không phải static thật
  • Là proxy tới object trong container

Pattern:

  • Facade Pattern

👉 Ưu:

  • Code ngắn
    👉 Nhược:
  • Dễ lạm dụng → khó test nếu không hiểu bản chất

5. Repository Pattern (tùy dev dùng)

Không bắt buộc, nhưng dev Laravel hay dùng:

interface UserRepository {
    public function find($id);
}

👉 Giúp:

  • Tách DB layer khỏi business logic
  • Swap MySQL ↔ Elasticsearch dễ

6. Eloquent ORM → Active Record Pattern

Model trong Laravel:

$user = User::find(1);
$user->save();

👉 Model = luôn cả data + behavior

Pattern:

  • Active Record

👉 Ưu:

  • Nhanh, tiện
    👉 Nhược:
  • Khó scale nếu domain phức tạp

7. Middleware → Chain of Responsibility

Request đi qua pipeline:

Request → Middleware A → Middleware B → Controller

👉 Pattern:

  • Chain of Responsibility

8. Event - Listener → Observer Pattern

event(new UserRegistered($user));

Listener sẽ handle

👉 Pattern:

  • Observer Pattern

9. Queue / Job → Command Pattern

dispatch(new SendEmailJob());

👉 Pattern:

  • Command Pattern

10. Pipeline Pattern (xịn nhưng ít người để ý)

Laravel có:

Pipeline::send($data)
    ->through([...])
    ->then(...)

👉 Dùng trong:

  • Middleware
  • Data processing

🔥 Tổng kết ngắn gọn

Laravel 12 = Framework đa pattern

Thành phầnPattern
Routing + ControllerMVC
Service ContainerIoC + DI
FacadeFacade
EloquentActive Record
MiddlewareChain of Responsibility
EventsObserver
QueueCommand
Service ProviderFactory / Registry

⚠️ Góc nhìn thực tế (quan trọng với bạn)

Với hệ thống lớn (multi-site, high load kiểu bạn đang làm):

  • Không nên phụ thuộc quá nhiều vào Eloquent
  • Nên:
    • Service layer
    • Repository + DTO
    • Cache layer (Redis)
    • Tách read/write DB

👉 Laravel chỉ là “framework”, còn scale được hay không là do architecture bạn build lên trên nó