2012-12-09 32 views
5

Trong Java hiệu quả, mục 1, nó nói rằng các phương thức nhà máy tĩnh đã làm cho khung Collections nhỏ hơn nhiều so với nó sẽ có. Ai đó có thể giải thích như thế nào? Tôi không thể hiểu làm thế nào sau đây là có thể chỉ vì sử dụng phương pháp nhà máy tĩnh? Tôi có nghĩa là chúng tôi vẫn phải triển khai những triển khai riêng biệt đó chứ?Phương pháp nhà máy tĩnh trong java hiệu quả

Các bộ sưu tập Khung API là nhỏ hơn nhiều so với nó đã có đã có nó xuất khẩu ba mươi hai lớp công chúng riêng biệt, một cho mỗi thực hiện tiện lợi.

+0

'nhỏ hơn nhiều 'bạn có nghĩa là - hiệu suất, phải không? –

+1

No. Tôi nghĩ trong java hiệu quả, chúng có nghĩa là kích thước. Nêu tôi sai vui long chân chỉnh tôi. –

Trả lời

2

Bằng "nhỏ hơn", chúng có nghĩa là "ít lớp" hơn.

Thay vì cung cấp nhiều lớp cho từng biến thể triển khai, thay vào đó, các phương thức của nhà máy đã được cung cấp để trả về các triển khai như vậy mà không cần lớp của chúng được khai báo là lớp cấp cao nhất (ít "lớp bloat").

+0

Bạn có thể giải thích những bất lợi của việc có quá nhiều lớp cấp cao nhất không? Tôi không chắc tôi hiểu rằng một phần của câu trả lời. – Viraj

+0

@viraj quá nhiều lớp học là một dạng của "sự lộn xộn mã", đặc biệt khi các lớp cụ thể cần thiết là các hương vị hiệu quả của một vài giao diện. Các phương thức của nhà máy cũng cung cấp một API ổn định mà các lớp thực tế được sử dụng được tự do thay đổi khi cơ sở mã phát triển. – Bohemian

+0

Sửa lỗi nếu tôi không hiểu đúng, ẩn các triển khai thực tế (bằng cách tạo các lớp không công khai) phía sau các giao diện trong các phương thức của nhà máy trợ giúp trong trường hợp bạn muốn thay đổi triển khai khi mã cơ sở phát triển. Điều này có nghĩa là, giả sử bạn có 2 triển khai cho một giao diện cụ thể trong phiên bản 1.1, bạn có thể chỉ cần xóa 1 cài đặt của phiên bản 2 trong phiên bản 1.2? – Viraj

0

Tôi nghĩ ý nghĩa ở đây là chỉ có các triển khai lõi trong API bộ sưu tập java, nếu bạn cần đồng bộ hóa, v.v. "trình bao bọc" được cung cấp bởi các nhà máy tĩnh.

Vì vậy, có 8 triển khai và không có "trình bao bọc" sẽ có nhiều hơn (tăng kích thước).

Xem http://docs.oracle.com/javase/7/docs/technotes/guides/collections/overview.html để biết thêm chi tiết

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