2016-04-21 75 views
2

我知道在一般情況下使用getters和使字段私有有很多優點(數據隱藏,解耦,等等,等等等等)。我所要求的是與immutable課程相關的。爲什麼在不可變對象中使用getter而不是公用字段?

比方說,我創建了一個模型類將數據從一個REST響應存儲,例如:

public final class Profile { 
    private final int id; 
    private final String name; 
    private final String info; 
    private final String location; 
    private final URI avatar; 
    private final Gender gender; 
    // about 10 more fields 
} 

類及其字段都爲最終的,不能更改或覆蓋。每個字段都是不可變類的實例,並在構造函數中進行驗證。此外,每個領域都需要公開訪問(無數據隱藏)。

在這種情況下,有什麼可能的優勢可能會增加三倍的大小,爲每個字段添加getters而不是公開這些字段?

回答

1

實現獲取器爲未來對Profile類的更改提供了靈活性。如果你的類提供了一個getter,你可以更改Profile類中的底層私有成員,並且它不會要求對類的使用者進行更改。您希望隱藏類級別變量的數據類型,就像隱藏值一樣。

相關問題