Inwazyjna struktura danych to taka, która wymaga pomocy elementów, które zamierza przechowywać w celu ich przechowywania.
Pozwólcie, że to przeredaguję. Kiedy umieszczasz coś w tej strukturze danych, to „coś” staje się świadome faktu, że w jakiś sposób znajduje się w tej strukturze danych. Dodanie elementu do struktury danych powoduje zmianę elementu.
Na przykład można zbudować nieinwazyjne drzewo binarne, w którym każdy węzeł ma odniesienie do lewego i prawego drzewa podrzędnego oraz odniesienie do wartości elementu tego węzła.
Lub możesz zbudować natrętne, w którym odniesienia do tych drzew podrzędnych są osadzone w samej wartości.
Przykładem inwazyjnej struktury danych może być uporządkowana lista elementów, które można modyfikować. Jeśli element się zmieni, lista musi zostać zmieniona, więc obiekt listy musi naruszyć prywatność elementów, aby uzyskać ich współpracę. to znaczy. element musi wiedzieć o liście, na której się znajduje, i informować go o zmianach.
Systemy ORM zwykle obracają się wokół inwazyjnych struktur danych, aby zminimalizować iterację dużych list obiektów. Na przykład, jeśli pobierzesz listę wszystkich pracowników w bazie danych, a następnie zmienisz nazwisko jednego z nich i zechcesz zapisać go z powrotem w bazie danych, natrętna lista pracowników zostanie poinformowana o zmianie obiektu pracownika, ponieważ obiekt wie, na której liście się znajduje.
Lista nieinwazyjna nie byłaby podawana i musiałaby samodzielnie dowiedzieć się, co się zmieniło i jak się zmieniło.