Skip to main content

Hvad er et uforanderligt objekt?

I objektorienteret programmering er et uforanderligt objekt et objekt, hvis egenskaber ikke kan ændres, når det er blevet oprettet.De fleste objekter er derimod mutable objekter, hvilket betyder, at nogle eller alle deres egenskaber kan ændres frit efter oprettelsen.En række computersprog har evnen til at skabe uforanderlige genstande, herunder Java, C ++, Erlang, TCL og Scala.

Et uforanderligt objekt kan oprettes på en af to måder: ved at oprette en klasse, der pr. Definition er uforanderlig eller ved eksplicitAt erklære et ellers mutabelt objekt for at være uforanderligt.Metodikken til oprettelse af en uforanderlig klasse varierer afhængigt af det computersprog, der bruges.Uanset sproget må en uforanderlig klasse ikke have nogen metoder, der kan ændre sine interne data og ingen måde for metoder, der skal ændres mdash;dvs. tilsidesat eller overbelastet mdash;På en måde, der ville ændre sine interne data.Dette er den mere komplicerede af de to tilgange.For at oprette et uforanderligt objekt fra et ellers mutabelt objekt kan man på den anden side ofte anvende et nøgleord for at udpege objektet som uforanderligt.

Som et eksempel er det uforanderligt objektoprettelse i Java afhængig af det endelige nøgleord.En hurtig måde at gøre en klasse uforanderlig i Java på er at erklære klassen såvel som alle dens metoder og datamedlemmer, Final.En lignende strategi kan også bruges i C ++ med CONST -nøgleordet.Disse tilgange, afhængigt af klasseindholdet, er dog måske ikke de bedste.Generelt kan objekter normalt gøres uforanderlige ved omhyggelig vedligeholdelse af deres interne data.

At gøre et uforanderligt objekt ved hjælp af et nøgleord, som i ovenstående eksempel, er ofte meget lettere end at skrive en hel klasse for at være uforanderlig.Brug af denne tilgang har imidlertid sine farer.Når man eksplicit udpeger et uforanderligt objekt på denne måde, er det vigtigt for programmereren at være sikker på, at alle passende egenskaber og data først er indarbejdet i objektet.At stole på et ufuldstændigt objekt kan være farligt, især hvis det mangler et vigtigt stykke information.

Hvis et objekt er mutabelt, men kræver, at uforanderlige data oprettes korrekt, skal de uforanderlige data initialiseres, før det mutable objekt kan fremstilles.Immutable objekter er altid uforanderlige, hvad enten det er dataværdier eller store objekter, og skal altid behandles som sådan.Generelt kan et uforanderligt objekt ikke gøres mutabelt, efter at det er blevet oprettet, selvom de undertiden måske kopieres som mutable objekter.Det kan normalt antages, at et uforanderligt objekt og enhver af dets kopier også er uforanderlige, hvilket kan forhindre data eller hukommelsesproblemer.