Tôi đang xem qua Hiệu quả Java và một số thứ của tôi mà tôi coi là tiêu chuẩn không được đề xuất bởi cuốn sách, ví dụ như tạo đối tượng, tôi đã ấn tượng rằng nhà thầu là cách tốt nhất để làm điều đó và sách nói rằng chúng ta nên sử dụng các phương pháp nhà máy tĩnh, tôi không thể vài lợi thế và bất lợi như vậy và do đó đang hỏi câu hỏi này, đây là những lợi ích của việc sử dụng nó.Tạo đối tượng: Constructors hoặc phương thức nhà máy tĩnh
Ưu điểm:
- Một ưu điểm của phương pháp nhà máy tĩnh là, không giống như nhà thầu, họ có tên.
- Lợi thế thứ hai của phương pháp nhà máy tĩnh là, không giống như các nhà thầu, chúng không bắt buộc phải tạo đối tượng mới mỗi lần được gọi.
- Lợi thế thứ ba của phương pháp nhà máy tĩnh là, không giống như các nhà thầu, chúng có thể trả về một đối tượng của bất kỳ loại phụ nào của kiểu trả về của chúng.
- Lợi thế thứ tư của phương pháp nhà máy tĩnh là chúng giảm độ dài của việc tạo các thể hiện kiểu tham số.
Nhược điểm:
- Nhược điểm chính của chỉ cung cấp phương pháp nhà máy tĩnh là lớp mà không nhà xây dựng công cộng hoặc bảo vệ không thể được subclassed.
- Một bất lợi thứ hai của phương pháp nhà máy tĩnh là chúng không phải là dễ dàng phân biệt với các phương pháp tĩnh khác.
tham khảo: Java hiệu quả, Joshua Bloch, phiên bản 2, pg: 5-10
Tôi không thể hiểu được lợi thế thứ tư và những bất lợi thứ hai và sẽ đánh giá cao nếu ai đó có thể giải thích những điểm đó. Tôi cũng muốn hiểu làm thế nào để quyết định sử dụng có nên đi cho Constructor hoặc phương pháp nhà máy tĩnh để tạo đối tượng.
IMHO, nó đi xuống đến phức tạp: bạn cần phải tạo ra phức tạp hơn nếu mã của bạn sẽ không được mở rộng bởi bất cứ ai nhưng bạn? –
Thậm chí nếu không có ai khác đang mở rộng mã, nó vẫn cần phải dễ dàng hiểu nếu bạn quay trở lại nó trong một vài tháng sau khi sửa lỗi bảo trì/sửa lỗi, v.v. – Kurru
Vì vậy, sẽ đủ công bằng để nói rằng hàm tạo sẽ không tạo phức tạp và phương pháp nhà máy tĩnh sẽ? Tôi đang cố hiểu cách nào sẽ mang lại sự phức tạp hơn? – Rachel