Bạn sẽ cần phải tạo một đối tượng có thể quản lý việc này.
Hãy suy nghĩ về những gì cần thiết để lưu trữ cho mỗi mục. Về cơ bản, dữ liệu (ví dụ: txtName
) và thời gian hết hạn. Điều đó có nghĩa là bạn có thể sẽ cần một lớp hoặc cấu trúc chỉ có 2 phần tử đó.
Lớp học ExpiringList
của bạn sẽ là danh sách loại đó.
Bây giờ bạn có cấu trúc dữ liệu cơ bản của mình (bộ sưu tập/danh sách ExpiringListItem
), bạn cần phải suy nghĩ về những hoạt động bạn muốn hỗ trợ. Hiện tại bạn đã liệt kê AddToList, những người khác có lẽ sẽ là RemoveFromList, Clear và có thể lặp qua tất cả các mục.
Điều duy nhất duy nhất cho ExpiringList của bạn so với bình thường List<T>
là bạn muốn tự động xóa các mục đã hết hạn. Do đó, bạn có thể làm cho ExpiringList của mình triển khai giao diện IList<T>
và sử dụng Danh sách riêng trong nội bộ, có thể bạn có thể tạo danh sách của mình (và theo nhu cầu của bạn là loại ExpiredListItem
) chung chung.
Phần phức tạp, ngoài hiểu biết và triển khai thừa kế (một câu hỏi riêng biệt thực sự), đang tìm cách xóa các mục đã hết hạn. Điều này có nghĩa là tạo ra một phương thức trong lớp của bạn lặp lại (theo thứ tự ngược lại) trên các mục của bạn, so sánh thời gian hết hạn của chúng với thời gian hiện tại và loại bỏ thời gian hết hạn.
Bạn có thể triển khai giao diện đơn giản bằng cách gọi các phương thức thích hợp trong danh sách nội bộ của mình.
Bạn có thể nói tại thời điểm này, bạn đã hoàn tất, vì bạn chỉ cần gọi phương thức đó định kỳ để đảm bảo tất cả các mục đã hết hạn đều biến mất trước khi bạn sử dụng các mục trong danh sách.
Có thể một tùy chọn tốt hơn là gọi phương thức này trước khi chạy phương thức trên danh sách nội bộ. Tùy thuộc vào cách bạn sẽ sử dụng danh sách của bạn, điều này có thể là quá mức cần thiết.
Nguồn
2011-06-27 13:02:33
Đây được gọi là 'bộ nhớ cache'. – leppie
đầu mối: tạo cấu trúc dữ liệu để thực hiện điều này – crashmstr
Nếu bạn đang sử dụng asp.net, các lớp bộ nhớ cache sẽ làm điều này cho bạn. –