Unter Immutable werden Objekte / Objektkompositionen verstanden, die nach ihrer Erzeugung nicht mehr verändert werden können. Alle Attributwerte werden bei der Erzeugung bestimmt und im nachhinein nicht mehr verändert.
Ein prominenter Java Vertreter des Immutable-Patterns ist die Klasse
java.lang.String
Die Anwendung des Immutable-Patterns in der Programmiersprache Java
ist relativ einfach. Zunächst sollten alle Attribute als private
und wenn möglich als final
deklariert werden.
Die Wertzuweisungen sollten wenn möglich im
Konstruktor gemacht werden. Weiterhin werden für die Attribute nur die
getter-Methoden und keine setter-Methoden definiert.
Um zu Verhindern, dass in abgeleiteten Klassen Werte veränderbar gemacht
werden, sollte die Klasse zusätzlich als final
deklariert
werden (was eine Erweiterung verhindert).
Das nachfolgende Beispiel MyImmutable1.java zeigt beispielhaft die Anwendung des Immutable-Patterns in der Programmiersprache Java.
public final class MyImmutable1 { private final int intValue; private final double doubleValue; private final double doubleValue2; private final Object anObject; public MyImmutable1(int intValue, double doubleValue, Object anObject){ this.intValue = intValue; this.doubleValue = doubleValue; this.anObject = anObject; doubleValue2 = intValue*doubleValue; } public final int getIntValue(){ return intValue; } public final double getDoubleValue(){ return doubleValue; } public final double getDoubleValue2(){ return doubleValue2; } public final Object getAnObject(){ return anObject; } }