Szukam rzeczywistych przykładów (open source) programów (lub algorytmów), które zmieniają konkretną klasę obiektu (lub zmiennej) w środowisku wykonawczym.Zmiana implementacji/klasy w czasie wykonywania
Przykład takiego zachowania w Javie może wyglądać jak poniższy fragment kodu. Tutaj, LinkedList
, który działa dobrze w kontekście częstych wstawień i/lub usuwa, zmienia się w ArrayList
, który wykonuje się dobrze w kontekście losowego dostępu i iteracji.
List myList = new LinkedList();
/* Lots of inserts */
...
myList = new ArrayList(myList); // 'change' into different class
/* Lots of iteration */
...
Przykład Java powyżej zmian pomiędzy LinkedList
i ArrayList
dla dobra wydajność.
Jednak przykłady w dowolnym języku, dowolnej strukturze danych, przy użyciu dowolnej techniki * iz dowolnego powodu są mile widziane.
* Technika: jasne i proste jak w przykładzie powyżej, lub użyciu become:
w Smalltalk lub __class__
w Pythonie, albo ...
na walnym, pytanie, które prosi o biblioteki wyłączyć temat tutaj. Nie mogę również zrozumieć celu, za którym stoi twoje pytanie, ponieważ jasne jest, że rozumiesz, jakie są tego korzyści i jak można to zrobić na twoim przykładzie. – amit
** Nie szukam biblioteki **, szukam "przykładowego kodu", tj. Innych scenariuszy, w których programiści zmieniają strukturę/klasy danych obiektu. Celem mojego pytania jest to, że muszę zbudować przypadek, że jest to dość powszechny wzorzec dla zapewnienia abstrakcji języka. – madewael
Często tworzę tablice dynamicznie w fazie inicjalizacji i używam do tego ArrayList. Wtedy wiem, że żadne dalsze zmiany się nie dokonają. Zamienię je na zwykłą, starą tablicę, aby zmniejszyć obciążenie pamięci i nieco zwiększyć wydajność. – MrSmith42