Я хочу иметь неизменное Java объектов, как это (сильно упрощено):Mutable класса как ребенок неизменного класса
class Immutable {
protected String name;
public Immutable(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
В некоторых случаях объект должен быть не только для чтения, но изменяемым, так что я мог бы добавить изменчивость по наследству:
public class Mutable extends Immutable {
public Mutable(String name) {
super(name);
}
public void setName(String name) {
super.name = name;
}
}
Хотя это технически хорошо, мне интересно, если это согласуется с объектно-ориентированным программированием и наследованием, что изменяемое также типа неизменных. Я хочу избежать преступления ООП, чтобы бросить UnsupportedOperationException
для неизменяемого объекта, как это делает API коллекций Java.
Что вы думаете? Любые другие идеи?
Это именно то, что делает Objective C: 'NSMutableString' наследует от' NSString', 'NSMutableArray' наследует от' NSArray' и т. Д. – Nefrubyr