0
我有擴展基類的Varchar,Integer和Float的多態類型。Java deserialise json實現抽象對象open closed原理
我不得不將以下內容添加到基類,因此我可以在休息api中使用它。
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(name = "VarcharField", value = VarcharField.class),
@JsonSubTypes.Type(name = "IntegerField", value = IntegerField.class),
@JsonSubTypes.Type(name = "FloatField", value = FloatField.class)
})
public abstract class Field<T> implements FieldType<T>, Serializable {
我的問題是,它打破了開放的封閉原則,有無論如何繞過這個,外部配置也許?
解釋開閉原理是如何被打破的。我並不是說它不是,我只是想知道你的問題是什麼。如果你不想枚舉所有的子類,那麼使用'JsonTypeInfo.Id.CLASS'或'JsonTypeInfo.Id.MINIMAL_CLASS'。 – lexicore
每當我需要添加一個新字段時,我將不得不修改抽象類,雖然很輕微,但我覺得應該關閉該類以進行任何修改,這就像配置。 –