Que signifie, pour une structure de données pour être “intrusif”?
J'ai vu le terme intrusive utilisé pour décrire des structures de données comme les listes et les piles, mais ça veut dire quoi?
Pouvez-vous donner un exemple de code d'un intrusif structure de données, et en quoi elle diffère d'un non-intrusives un?
Aussi, pourquoi faire intrusif (ou non intrusives)? Quels sont les avantages? Quels sont les inconvénients?
Vous devez vous connecter pour publier un commentaire.
Intrusive structure de données est celui qui exige l'aide d'éléments qu'il a l'intention de les stocker afin de les stocker.
Laissez-moi reformuler ça. Lorsque vous mettez quelque chose dans la structure de données, que ce "quelque chose" devient conscient du fait que c'est dans cette structure de données, d'une certaine façon. L'ajout de l'élément de données modifications de la structure de l'élément.
Par exemple, vous pouvez construire un non-intrusive arbre binaire, où chaque nœud de disposer d'une référence à gauche et à droite sous les arbres, et une référence à la valeur de l'élément de nœud.
Ou, vous pouvez construire une intrusif où les références à ces sous-arbres sont incorporés dans la valeur elle-même.
Un exemple d'un intrusif structure de données serait une liste ordonnée d'éléments qui sont mutables. Si l'élément change, la liste doit être réorganisée, de sorte que les objets de la liste a à empiéter sur la vie privée des éléments afin d'obtenir leur coopération. c'est à dire. l'élément a à savoir à propos de la liste il est, et de l'informer des changements.
ORM-systèmes habituellement tournent autour intrusive structures de données, afin de minimiser l'itération sur les grandes listes d'objets. Par exemple, si vous récupérez une liste de tous les employés dans la base de données, puis modifier le nom de l'un d'entre eux, et que vous voulez enregistrer dans la base de données, l'intrusion de la liste des employés serait dit quand l'employé de l'objet a changé, car cet objet ne sait qui liste dans.
Un non-intrusive liste ne serait pas dit, et aurait pour comprendre ce qui a changé et comment elle a changé par lui-même.
Dans un intrusive contenant les données lui-même est chargé de stocker les informations nécessaires pour le conteneur. Qui signifie que, d'un côté le type de données doit être spécialisée en fonction de la façon dont il sera stocké, de l'autre côté, cela signifie que les données "sait" comment elle est stockée et peut donc être optimisé un peu mieux.
Non-intrusive:
Intrusif:
Personnellement, je préfère intrusif de conception pour la transparence.