Skip to main content

Vad är ett oföränderligt föremål?

I objektorienterad programmering är ett oföränderligt objekt ett objekt vars egenskaper inte kan ändras efter att det har skapats.De flesta objekt är däremot muterbara objekt, vilket innebär att vissa eller alla deras egenskaper kan ändras fritt efter skapandet.En mängd olika datorspråk har förmågan att skapa oföränderliga objekt, inklusive Java, C ++, Erlang, TCL och Scala.

Ett oföränderligt objekt kan skapas på ett av två sätt: genom att skapa en klass som är per definition oföränderlig eller genom uttryckligenAtt förklara ett annars muterbart objekt för att vara oföränderligt.Metodiken för att skapa en oföränderlig klass varierar beroende på datorspråket som används.Oavsett språket måste en oföränderlig klass inte ha några metoder som kan ändra sina interna data och inget sätt för metoder att ändras mdash;dvs. åsidosatt eller överbelastad mdash;på ett sätt som skulle ändra sina interna uppgifter.Detta är den mer komplicerade av de två tillvägagångssätten.För att skapa ett oföränderligt objekt från ett annars muterbart objekt kan man å andra sidan ofta tillämpa ett nyckelord för att utse objektet som oföränderligt.

Som ett exempel förlitar sig oföränderliga objektskapande i Java starkt på det slutliga nyckelordet.Ett snabbt sätt att göra en klass oföränderlig i Java är att förklara klassen, liksom alla dess metoder och datamedlemmar, slutgiltiga.En liknande strategi kan också användas i C ++ med Const -nyckelordet.Dessa tillvägagångssätt, beroende på klassinnehållet, kanske dock inte de bästa.I allmänhet kan objekt vanligtvis göras oföränderliga genom noggrant underhåll av deras interna data.

Att göra ett oföränderligt objekt med hjälp av ett nyckelord, som i exemplet ovan, ofta är mycket enklare än att skriva en hel klass för att vara oföränderlig.Att använda detta tillvägagångssätt har dock sina faror.När man uttryckligen utser ett oföränderligt objekt på detta sätt är det viktigt för programmeraren att vara säker på att alla lämpliga egenskaper och data först har införlivats i objektet.Att förlita sig på ett ofullständigt objekt kan vara farligt, särskilt om det saknas en väsentlig information.

Om ett objekt är muterbart men kräver att oföränderliga data ska skapas korrekt, måste den oföränderliga data initialiseras innan det muterbara objektet kan göras.Imutable föremål är alltid oföränderliga, oavsett om det är datavärden eller stora objekt, och måste alltid behandlas som sådana.I allmänhet kan ett oföränderligt objekt inte göras muterbart efter att det har skapats, även om de ibland kan kopieras som muterbara objekt.Det kan vanligtvis antas att ett oföränderligt objekt och någon av dess kopior också är oföränderliga, vilket kan förhindra data eller minnesproblem.