Bỏ qua để đến nội dung
Knowledge Hub

Design Patterns Cơ bản

Design pattern dễ bị học ngược: nhớ sơ đồ UML trước rồi tìm chỗ áp vào. Cách có ích hơn là đi từ triệu chứng cụ thể trong code, rồi hỏi pattern nào giải quyết đúng triệu chứng đó.

Triệu chứng Pattern Bài
Hàm phình ra vì mỗi biến thể nghiệp vụ thêm một nhánh if; test một phép tính phải dựng cả workflow Strategy Strategy pattern
Interface ứng dụng muốn dùng không khớp SDK hoặc nhà cung cấp; tên và trạng thái của họ len vào logic nghiệp vụ Adapter Adapter pattern
Cùng một hành vi cắt ngang (cache, retry, metrics) bị copy quanh nhiều lời gọi Decorator Decorator pattern
Một sự kiện nghiệp vụ kéo theo email, điểm thưởng, analytics và service cứ phải import thêm module Observer / domain event Observer và domain event
  1. Strategy trước: tách phần biến thiên (selector, strategy, context), có ví dụ NestJS DI và bảng so sánh với State và Template Method.
  2. Adapter sau: đặt lớp dịch ở ranh giới tích hợp, nối với hexagonal ports and adapters và anti-corruption layer, kèm bảng phân loại lỗi. Đây là bài giữ ví dụ PaymentPort đầy đủ.

Hai pattern hay dùng chung: mỗi gateway một adapter, một strategy chọn gateway theo merchant.