2009-05-13 38 views
6

Có một cuộc thảo luận tốt về điều này trong general case.Tại sao lớp Java Pattern sử dụng phương thức factory chứ không phải constructor?

Tuy nhiên, tôi tự hỏi tại sao lớp Pattern sử dụng phương thức tĩnh compile để tạo đối tượng chứ không phải hàm tạo?

Dường như tôi trực quan hơn để sử dụng hàm tạo.

+0

Để biết thêm thông tin, hãy xem bài viết của [Dr. Joshua Bloch] (https://en.wikipedia.org/wiki/Joshua_Bloch), trích dẫn cuốn sách * Hiệu quả Java * (2e): [* Tạo và phá hủy các đối tượng Java - Mục 1: Xem xét các phương pháp nhà máy tĩnh thay vì các nhà xây dựng *] (https://www.informit.com/articles/article.aspx?p=1216151) –

Trả lời

9

Lớp mẫu mới hơn nhiều thứ trong JDK. Như vậy tôi tin rằng họ đã áp dụng cách tiếp cận hiện đại hơn trong việc sử dụng các phương pháp nhà máy hơn là cách tiếp cận cũ của các nhà thầu công cộng. Bạn thực sự không thể trang bị thêm phương thức nhà máy cho các lớp hiện có.

Nói chung, không có nhiều lý do để sử dụng một hàm tạo trên một phương thức nhà máy vì vậy tôi nghĩ rằng đó là tất cả những gì đã xảy ra với nó. Phương pháp nhà máy cho phép bạn tạo đối tượng trừu tượng, có thể khá hữu ích.

6

Tại sao bạn lại có hai ví dụ Pattern của cùng một regex? Một phương thức tạo tĩnh cho phép các triển khai có khả năng lưu vào bộ nhớ cache Pattern s đôi khi trả về cùng một đối tượng nếu cùng một lần regex được yêu cầu nhiều lần. Biên dịch Pattern s có thể tốn kém. Ngoài ra nếu các phương thức compile bổ sung trở nên cần thiết (nói các cú pháp khác nhau), chúng có thể được đặt tên khác thay vì tập hợp các nhà xây dựng bị quá tải gây nhầm lẫn.

+0

Nói chung, đối số của bạn là chính xác. Nhưng loại tối ưu hóa này nên được để lại tùy chọn, tôi nghĩ vậy. Tuy nhiên có rất nhiều điểm khác mà tối ưu hóa này có thể đã được áp dụng. – ordnungswidrig

2

Sử dụng phương pháp nhà máy cho Pattern cũng cuối cùng có thể cho phép sử dụng triển khai thực hiện quy trình cắm bổ sung của bên thứ ba. Thật không may, Sun đã không thực hiện bất kỳ tính năng nào bạn có thể nhận được khi sử dụng phương thức factory (khả năng plug-in, caching).

5

Mẫu nhà máy tĩnh được sử dụng khi có cơ hội tốt là việc triển khai cơ bản có thể được thay đổi theo cách có thể ảnh hưởng đến hàm tạo. Tóm lại, nhà máy cho phép sự linh hoạt đáng kể cho người bảo trì thư viện mà không bị ràng buộc bởi tính tương thích nhị phân và nguồn ở phía bên xây dựng.

Xem http://en.wikipedia.org/wiki/Factory_method_pattern để biết chi tiết - đặc biệt là phần 'Các lợi ích và biến thể khác'.

Các vấn đề liên quan