Khi mô hình hóa các lớp, cách khởi tạo ưa thích là gì:
- Người xây dựng, hoặc
- Phương pháp nhà máy
Và những gì sẽ được xem xét để sử dụng một trong hai?
Trong một số trường hợp nhất định, tôi thích có một phương thức xuất xưởng trả về null nếu đối tượng không thể được xây dựng. Điều này làm cho mã gọn gàng. Tôi chỉ có thể kiểm tra xem giá trị trả về có phải là null hay không trước khi thực hiện hành động thay thế, ngược lại với việc ném ngoại lệ từ hàm tạo. (Cá nhân tôi không thích ngoại lệ)
Giả sử, tôi có một hàm tạo trên một lớp có giá trị id. Hàm tạo sử dụng giá trị này để điền vào lớp từ cơ sở dữ liệu. Trong trường hợp không tồn tại một bản ghi với id được chỉ định, hàm tạo sẽ ném RecordNotFoundException. Trong trường hợp này, tôi sẽ phải bao gồm việc xây dựng tất cả các lớp như vậy trong một khối try..catch.
Ngược lại với điều này, tôi có thể có một phương thức nhà máy tĩnh trên các lớp đó sẽ trả về null nếu không tìm thấy bản ghi.
Cách tiếp cận nào tốt hơn trong trường hợp này, phương thức xây dựng hoặc phương pháp nhà máy?