Phân bổ các đối tượng lười biếng có nghĩa là gì và nó hữu ích như thế nào?phân bổ lười biếng là gì?
Trả lời
Phân bổ lười biếng đơn giản có nghĩa là không phân bổ nguồn lực cho đến khi thực sự cần thiết. Điều này là phổ biến với các đối tượng singleton, nhưng nghiêm túc nói, bất cứ lúc nào một nguồn lực được phân bổ càng muộn càng tốt, bạn có một ví dụ về phân bổ lười biếng.
Bằng cách trì hoãn phân bổ tài nguyên cho đến khi bạn thực sự cần, bạn có thể giảm thời gian khởi động và thậm chí loại bỏ phân bổ hoàn toàn nếu bạn không bao giờ thực sự sử dụng đối tượng. Ngược lại, bạn có thể phân bổ trước một tài nguyên mà bạn mong muốn cần sau này, điều này có thể làm cho việc thực hiện sau này hiệu quả hơn với chi phí thời gian khởi động, và tránh được khả năng phân bổ không thực hiện sau này.
Đoạn mã dưới đây cung cấp một ví dụ về một singleton uể oải phân bổ:
public class Widget {
private Widget singleton;
public static Widget get() {
if (singleton == null) {
singleton = new Widget();
}
return singleton;
}
private Widget() {
// ...
}
// ...
}
Do lưu ý rằng mã này là không threadsafe. Trong hầu hết các trường hợp, truy cập vào phương thức get()
phải được đồng bộ hóa theo một số cách.
Khái niệm tương tự (và có lẽ tổng quát hơn) là lazy initialization.
- 1. Tải Lười biếng là gì?
- 2. Có một số người phân bổ lười biếng không?
- 3. Mục tiêu-C: Lớp học lười biếng là gì?
- 4. Một val lười biếng làm gì?
- 5. Phân bổ không gian lười trong hệ thống tệp Google
- 6. hGetContents quá lười biếng
- 7. Tiêm phụ thuộc lười biếng
- 8. Python, danh sách lười biếng
- 9. Tại sao không lười biếng
- 10. Ocaml: Danh sách lười biếng
- 11. Thư viện tải lười biếng?
- 12. Clojure: ma thuật lười biếng
- 13. Để trở thành một nhà phát triển lười biếng hoặc không phải là một nhà phát triển lười biếng?
- 14. làm thế nào để lười biếng bất cứ điều gì
- 15. Tải trọng lười biếng? Tốt hơn là tránh nó?
- 16. Sản phẩm cartesian lười biếng trong Haskell
- 17. Hibernate Query Language (HQL) - Truy vấn cho lười biếng/no-lười biếng tải
- 18. Có thể tải lười biếng cho một mối quan hệ không lười biếng trong Hibernate không?
- 19. Các trang tải lười biếng trong UIScrollView
- 20. Kích hoạt lười biếng các plugin Eclipse
- 21. Khởi tạo lười biếng trong .NET 4
- 22. Hibernate tải lười biếng không làm việc
- 23. String.format với đánh giá lười biếng
- 24. phiên bản lười biếng của mapM
- 25. Tải trọng lười biếng - cách tiếp cận tốt nhất là gì?
- 26. Mô hình thích hợp trong Python để thực hiện getters lười biếng là gì?
- 27. Danh sách lười biếng trong Prolog?
- 28. lười biếng các loại lặp trong Scala?
- 29. Trình lặp lười biếng của Python
- 30. Đánh giá lười biếng không tầm thường
là cụm từ "đối tượng trễ" và "lười biếng init" đồng nghĩa? Như trong tiêu đề của văn bản này * Java Làm thế nào để chương trình: Late Objects Version *? Tôi googled nhưng không thể tìm thấy bất kỳ tài liệu tham khảo ngoài văn bản đó. – hydeph
@hydeph, có vẻ như Deitel có hai phiên bản của cuốn sách đó, một với "các đối tượng trễ", trong đó các chương ban đầu theo kiểu thủ tục (và giới thiệu các lớp/đối tượng sau) và một với "đối tượng ban đầu", nơi các lớp/đối tượng được giới thiệu ngay lập tức. Họ đang sử dụng "đối tượng trễ" và "đối tượng ban đầu" để phân biệt giữa các phong cách giảng dạy này. Nó không có bất kỳ mối quan hệ nào để khởi tạo lười biếng. –