Tôi đang tìm các ví dụ thế giới thực (các chương trình nguồn mở) (hoặc các thuật toán) thay đổi lớp cụ thể của một đối tượng (hoặc biến) khi chạy.Thay đổi Triển khai/Lớp tại thời gian chạy
Ví dụ về hành vi như vậy trong Java có thể trông giống như trình tạo mã bên dưới. Ở đây, LinkedList
, hoạt động tốt trong bối cảnh chèn và/hoặc xóa thường xuyên, được thay đổi thành một ArrayList
, hoạt động tốt trong ngữ cảnh truy cập ngẫu nhiên và lặp lại.
List myList = new LinkedList();
/* Lots of inserts */
...
myList = new ArrayList(myList); // 'change' into different class
/* Lots of iteration */
...
Ví dụ Java trên thay đổi giữa LinkedList
và ArrayList
cho vì lợi ích của hiệu suất.
Tuy nhiên, ví dụ bằng bất kỳ ngôn ngữ nào, cho bất kỳ cấu trúc dữ liệu nào, sử dụng bất kỳ kỹ thuật nào * và vì bất kỳ lý do nào đều được hoan nghênh.
* Kỹ thuật: đồng bằng và đơn giản như trong ví dụ trên, hoặc sử dụng become:
trong Smalltalk, hoặc __class__
bằng Python, hoặc ...
Tại chung, một câu hỏi mà yêu cầu một thư viện là tắt chủ đề ở đây. Tôi cũng không thể hiểu được mục đích đằng sau câu hỏi của bạn, vì rõ ràng là bạn hiểu lợi ích của việc làm như thế nào, và làm thế nào nó có thể được thực hiện từ ví dụ của bạn. – amit
** Tôi không tìm kiếm thư viện **, tôi đang tìm "mã ví dụ", tức là, các tình huống khác trong đó các lập trình viên thay đổi cấu trúc/lớp dữ liệu của một đối tượng. Mục đích đằng sau câu hỏi của tôi là tôi cần phải xây dựng trường hợp rằng đây là một mẫu đủ phổ biến để cung cấp ngôn ngữ trừu tượng cho. – madewael
Tôi thường tạo mảng động trong giai đoạn khởi tạo và sử dụng ArrayList để làm như vậy, Sau đó tôi biết rằng không có thay đổi nào nữa sẽ xảy ra tôi chuyển nó thành một mảng cũ để giảm chi phí bộ nhớ và tăng hiệu năng một chút. – MrSmith42