Uforanderlige objekter kan være nyttige i multi-threaded applications. Flere tråde kan virke på data repræsenteret af uforanderlige objekter uden bekymring for, at dataene ændres af andre tråde. Uforanderlige objekter anses derfor for at være mere trådsikre end foranderlige objekter.
Hvad er meningen med uforanderlige objekter?
Maksimal afhængighed af uforanderlige objekter er bredt accepteret som en sund strategi til at skabe enkel, pålidelig kode. Uforanderlige objekter er særligt nyttige i samtidige applikationer. Da de ikke kan ændre tilstand, kan de ikke ødelægges af trådinterferens eller observeres i en inkonsekvent tilstand.
Hvilke objekter skal kaldes uforanderlige?
Uforanderlige objekter er simpelthen objekter, hvis tilstand (objektets data) ikke kan ændres efter konstruktion. Eksempler på uforanderlige objekter fra JDK inkluderer String og Integer. Uforanderlige objekter forenkler dit program i høj grad, da de: er enkle at konstruere, teste og bruge.
Hvordan implementerer du et uforanderligt objekt?
For at oprette et uforanderligt objekt skal du følge nogle enkle regler:
- Tilføj ikke nogen sættermetode.
- Erklær alle felter endelige og private.
- Hvis et felt er et objekt, der kan ændres, skal du oprette defensive kopier af det til getter-metoder.
- Hvis et foranderligt objekt, der sendes til konstruktøren skal tildeles til et felt, skal du oprette en defensiv kopi af det.
Hvor skal vibruge uforanderlig klasse i Java?
Uforanderlige klasser gør samtidig programmering lettere. Uforanderlige klasser sørger for, at værdier ikke ændres midt i en operation uden at bruge synkroniserede blokke. Ved at undgå synkroniseringsblokeringer undgår du deadlocks.