Skip to main content

Hva er et uforanderlig objekt?

I objektorientert programmering er et uforanderlig objekt et objekt hvis egenskaper ikke kan endres etter at det er opprettet.De fleste objekter derimot er mutable objekter, noe som betyr at noen eller alle egenskapene deres kan endres fritt etter opprettelse.En rekke dataspråk har muligheten til å lage uforanderlige objekter, inkludert Java, C ++, Erlang, TCL og Scala.

Et uforanderlig objekt kan opprettes på en av to måter: ved å lage en klasse som per definisjon er uforanderlig eller ved eksplisittÅ erklære et ellers mutabelt objekt for å være uforanderlig.Metodikken for å lage en uforanderlig klasse varierer avhengig av dataspråk som brukes.Uansett språket, må en uforanderlig klasse ikke ha noen metoder som kan endre sine interne data og ingen måte for metoder som skal endres og mdash;dvs. overstyrt eller overbelastet mdash;på en måte som ville endre sine interne data.Dette er det mer kompliserte av de to tilnærmingene.En rask måte å gjøre en klasse uforanderlig i Java er å erklære klassen, så vel som alle dens metoder og datamedlemmer, Final.En lignende strategi kan også brukes i C ++ med Const -nøkkelordet.Disse tilnærmingene, avhengig av klasseinnholdet, er kanskje ikke de beste.Generelt kan objekter vanligvis gjøres uforanderlig ved nøye vedlikehold av deres interne data.

Å lage et uforanderlig objekt ved hjelp av et nøkkelord, som i eksemplet ovenfor, er ofte mye enklere enn å skrive en hel klasse for å være uforanderlig.Å bruke denne tilnærmingen har imidlertid sine farer.Når du eksplisitt utpeker et uforanderlig objekt på denne måten, er det viktig for programmereren å være sikker på at alle passende egenskaper og data først har blitt integrert i objektet.Å stole på et ufullstendig objekt kan være farlig, spesielt hvis det mangler en viktig informasjon.

Hvis et objekt er mutabelt, men krever at uforanderlige data skal opprettes riktig, må de uforanderlige dataene initialiseres før det mutable objektet kan gjøres.Uforanderlige objekter er alltid uforanderlige, enten de er dataverdier eller store objekter, og må alltid behandles som sådan.Generelt kan ikke et uforanderlig objekt gjøres mutabelt etter at det er opprettet, selv om de noen ganger kan kopieres som mutable objekter.Det kan vanligvis antas at et uforanderlig objekt og noen av kopiene også er uforanderlige, noe som kan forhindre data eller hukommelsesproblemer.