Thông tin bổ sung của Heres có thể giúp hiểu rõ hơn về một số câu trả lời chính xác khác, nhưng ngắn hơn. Theo nghĩa hẹp nhất, Nhà máy Lớp là một hàm hoặc phương thức tạo hoặc chọn một lớp và trả về lớp, dựa trên một số điều kiện được xác định từ các tham số đầu vào hoặc ngữ cảnh chung. Điều này là bắt buộc khi không thể xác định loại đối tượng cần thiết cho đến khi thời gian chạy. Việc thực hiện có thể được thực hiện trực tiếp khi các lớp là chính các đối tượng trong ngôn ngữ đang được sử dụng, chẳng hạn như Python.
Vì việc sử dụng chính của bất kỳ lớp nào là tạo ra các thể hiện của chính nó, trong các ngôn ngữ như C++, nơi các lớp không phải là các đối tượng có thể được truyền xung quanh và thao tác, một kết quả tương tự thường có thể đạt được bằng cách mô phỏng "các nhà xây dựng ảo", nơi bạn gọi một hàm tạo lớp cơ sở nhưng lấy lại một cá thể của một số lớp dẫn xuất.Điều này phải được mô phỏng bởi vì các hàm tạo không thể thực sự là virtual✶ trong C++, đó là lý do tại sao đối tượng đó — không phải lớp — nhà máy thường được triển khai dưới dạng hàm độc lập hoặc phương thức tĩnh.
✶ chức năng ảo thường được giải quyết "late" bởi các loại thực tế của đối tượng tham chiếu, nhưng trong trường hợp nhà thầu, các đối tượng không tồn tại, vì vậy loại phải được xác định bởi một số phương tiện khác. Việc triển khai tốt nhất là những người xử lý các lớp ứng cử viên mới một cách tự động khi chúng được thêm vào thay vì chỉ có một tập hợp hữu hạn nào đó hiện được mã hóa cứng vào nhà máy (mặc dù việc trao đổi thường được chấp nhận nếu nhà máy là nơi duy nhất yêu cầu sửa đổi).
Cuốn sách 1991 của James Coplien Advanced C++: Programming Styles and Idioms có chi tiết về một cách để triển khai các nhà xây dựng chung ảo như vậy trong C++. Thậm chí còn có nhiều cách tốt hơn để thực hiện việc này bằng cách sử dụng C++ templates, nhưng điều đó không được đề cập trong cuốn sách trước khi được thêm vào định nghĩa ngôn ngữ chuẩn. Thực tế, các bản mẫu C++ là các nhà máy lớp vì chúng khởi tạo một lớp mới bất cứ khi nào chúng được sử dụng với các đối số kiểu thực tế khác nhau. Cập nhật: Tôi đã viết một bài báo năm 1998 mà ông viết cho EuroPLoP có tiêu đề C++ Idioms, trong số những thứ khác, ông sửa đổi và tập hợp các thành ngữ trong sách của mình thành mẫu thiết kế mẫu la la năm 1994 Design Patterns: Elements of Re-Usable Object-Oriented Software. Lưu ý đặc biệt là phần Virtual Constructor (sử dụng cấu trúc mẫu Envelope/Letter).
Xem thêm các câu trả lời có liên quan ở đây cho câu hỏi Class factory in Python. Xem thêm Abstract Factory, Template Style là bài viết của Tiến sĩ Dobb năm 2001 cũng về việc triển khai chúng với các mẫu C++.