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 immutable -objekt kan skapas på ett av två sätt: genom att skapa en klass som är per definition immutable eller genom att uttryckligen förklara ett annars muterbart objekt 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åk 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 - dvs. åsidosättande eller överbelastad - på ett sätt som skulle ändra dess interna data. Detta är desto mer komplicerat av de två tillvägagångssätten. Att skapa ett oföränderligt objekt från en annanwiSE Mutable -objekt, å andra sidan, kan man ofta tillämpa ett nyckelord för att utse objektet som oföränderligt.

Som ett exempel förlitar 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 ett nyckelord, som i exemplet ovan, är ofta 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 egenskaperoch data har först integrerats i objektet. Att förlita sig på ett ofullständigt objekt kan vara farligt, särskilt om det saknar en viktig information.

Om ett objekt är muterbart men kräver att oföränderliga data ska skapas korrekt, måste de oföränderliga data initialiseras innan det muterbara objektet kan göras. Imutable -objekt ä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.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?