PHP - Design Pattern: Factory Method

trieu.dev.da

Nguyễn Thanh Triều
Factory Method là một mẫu thiết kế sáng tạo giúp giải quyết vấn đề tạo ra các đối tượng sản phẩm mà không cần chỉ định các lớp cụ thể của chúng.
Factory Method định nghĩa một phương thức, nên được sử dụng để tạo các đối tượng thay vì gọi hàm dựng trực tiếp (toán tử new). Các lớp con có thể ghi đè phương thức này để thay đổi lớp đối tượng sẽ được tạo.
Vấn đề
Hãy tưởng tượng rằng bạn đang tạo ra một ứng dụng quản lý hậu cần. Phiên bản đầu tiên của ứng dụng của bạn chỉ có thể xử lý việc vận chuyển bằng xe tải, vì vậy phần lớn mã của bạn sẽ tồn tại trong lớp Xe tải.
Sau một thời gian, ứng dụng của bạn trở nên phổ biến đến mức bạn nhận được rất nhiều yêu cầu bao gồm cả việc vận chuyển bằng đường biển, và sau này có thể mở rộng thêm các phương tiện vận chuyển khác nữa.


Giải pháp
Factory Method cho thấy thay thế việc tạo đối tượng trực tiếp (sử dụng toán tử new) với một lời gọi đến phương thức "factory" đặc biệt. . Các đối tượng được trả về bởi các Factory Method thường được gọi là "products".
Bạn có thể ghi đè lên phương thức factory trong một lớp con và thay đổi lớp của một đối tượng sẽ được tạo ra. Hãy xem nó hoạt động như thế nào

Tất cả các products phải có một interface chung (Transport).



Các lớp con có thể trả về các products khác nhau miễn là các products này có một lớp cơ sở chung hoặc interface.

4.Cấu trúc

Products là 1 interface duy nhất cho tất cả các đối tượng có thể được tạo bởi Creator và các lớp con của nó.
Concrete Products triển khai implementations Products Interface. Concrete Creators sẽ tạo và trả về các instances của các lớp này.
Creator chính là factory method trả về Product type.
Concrete Creators sẽ implement hoặc ghi đè factory method bằng cách tạo và trả lại một Concrete Products.

CÔNG TY TNHH TƯ VẤN TRUYỀN THÔNG MINARA
ĐỊA CHỈ:
- 182 Trần Bình Trọng, P.3, Q.5, Tp.HCM
- 27 Đường số 16, Trung Tâm Hành Chính Dĩ An, Bình Dương.
Điện thoại: 097.777.1060
Email: info@minara.vn
Website: www.minara.vn
 
Bên trên