Я ищу примеры реального мира (с открытым исходным кодом) программ (или алгоритмов), которые изменяют конкретный класс объекта (или переменной) во время выполнения.Изменение реализации/класса во время выполнения
Примером такого поведения на Java может показаться снимок кода. Здесь LinkedList
, который хорошо работает в контексте частых вставок и/или удаляет, изменен на ArrayList
, который хорошо работает в контексте произвольного доступа и итерации.
List myList = new LinkedList();
/* Lots of inserts */
...
myList = new ArrayList(myList); // 'change' into different class
/* Lots of iteration */
...
В примере Java выше изменений между LinkedList
и ArrayList
для ради производительности.
Однако примеры на любом языке, для любой структуры данных, с использованием любой техники * и по любой причине приветствуются.
* Техника: просто и ясно, как в примере выше, или использованием become:
в SmallTalk или __class__
в Python, или ...
На общем, вопрос, который просит для библиотеки здесь. Я также не могу понять цели вашего вопроса, так как ясно, что вы понимаете, в чем польза от этого, и как это можно сделать из вашего примера. – amit
** Я не ищу библиотеку **, я ищу «пример кода», т. Е. Другие сценарии, в которых программисты изменяют структуру данных/классы объекта. Цель моего вопроса состоит в том, что мне нужно построить случай, что это достаточно распространенный шаблон для предоставления абстракций языка. – madewael
Я часто создаю массивы динамически на фазе инициализации и использую ArrayList для этого. Тогда я знаю, что никаких дальнейших изменений не произойдет. Я преобразую его в простой старый массив, чтобы уменьшить накладные расходы памяти и немного увеличить производительность. – MrSmith42