Abstract Factory cung cấp interface để tạo ra một family các object liên quan mà không cần chỉ rõ concrete class.
ts
interface UIFactory {
createButton(): Button
createCheckbox(): Checkbox
}WindowsUIFactory và MacUIFactory cùng implement interface này — nhờ vậy Button và Checkbox luôn thuộc cùng một theme.
Khác Factory Method ở chỗ: Factory Method tạo một loại product, còn Abstract Factory tạo nhiều loại product có quan hệ với nhau.
- Dùng khi: cần bảo đảm tính nhất quán giữa các component liên quan (UI theme, widget đa nền tảng, database driver + connection pool); hoặc hệ thống hỗ trợ nhiều variant và bạn muốn hoán đổi cả variant cùng lúc.
- Không dùng khi: chỉ có một loại product cần tạo (Factory Method là đủ), hoặc family chỉ có đúng một variant.
Trong React, pattern này xuất hiện dưới dạng Context + Provider cung cấp một nhóm service liên quan.