Tôi muốn nói Head First đơn giản là sai trong đặc tính này.
Wikipedia định nghĩa Phương thức mẫu là:
Trong công nghệ phần mềm, mẫu phương thức mẫu là một mẫu thiết kế hành vi xác định khung chương trình của thuật toán trong một hoạt động, trì hoãn một số bước cho các lớp con.
(Nó tham chiếu GoF cho điều đó.)
Và Phương thức nhà máy được định nghĩa là:
Trong lập trình dựa trên lớp, mẫu phương thức nhà máy là một mẫu sáng tạo sử dụng các phương thức của nhà máy để giải quyết vấn đề tạo đối tượng mà không phải chỉ định lớp chính xác của đối tượng sẽ được tạo.
Không có sự chồng chéo giữa hai cái, ngoại trừ trong C ++, sự kế thừa là một phần quan trọng của cả hai. Tuy nhiên, trong các ngôn ngữ tạo sự khác biệt giữa kế thừa triển khai ( extends
trong Java) và triển khai giao diện ( implements
trong Java), ngay cả điểm chung này cũng không tồn tại, vì thực thi giao diện là đủ cho phương thức nhà máy, nhưng không phải là phương thức mẫu. Và trong C ++, kế thừa thực hiện thuần túy (không có kế thừa giao diện, tức là thừa kế riêng hoặc CRTP) có thể được sử dụng cho cái trước, nhưng không dùng cho cái sau.
Và ngoài điều đó? Một là mẫu thiết kế hành vi, mẫu kia là mẫu sáng tạo. Một mô tả một phác thảo của một hoạt động, với một số phần chính còn lại được điền bởi các lớp con chuyên biệt; bên kia chỉ định một hợp đồng rất đơn giản, để lại toàn bộ việc thực hiện cho các trường hợp cụ thể. Chúng hoàn toàn khác biệt.
Theo tôi, dòng như trích dẫn chỉ đơn giản là sai. Hoặc đó là một lỗi rõ ràng trong cuốn sách, hoặc (ít có khả năng) nó nằm ngoài ngữ cảnh và nên được giải thích khác nhau.