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 eksplicit at erklære et ellers mutabelt objekt, der skal være uignæreligt. 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 - dvs. tilsidesat eller overbelastet - på en måde, der ville ændre sine interne data. Dette er den mere komplicerede af de to tilgange. At oprette et uforanderligt objekt fra en anden WHISE mutable objekt, på den anden side kan man ofte anvende et nøgleord for at udpege objektet som uforanderligt.

Som et eksempel er uforanderlig objektoprettelse i Java stærkt 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 lave 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 egenskaberog data er først 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 laves. 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.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?