我有一個SharedFolder
類,它實現一個抽象Endpoint
類問題涉及到的是獲取類的實例化後更新依賴於其他屬性(environment
)的值的子類(baseDir
)的屬性之一,這裏就是我說的:我該如何處理這種凌亂的變量陰影?
public class SharedFolderEndpoint extends Endpoint {
private String name = "SharedFolder";
private String hostname = "somehostname";
private Environment environment;
private String baseDir;
private String format = "someformat"
private String pattern = "somepattern";
public SharedFolderEndpoint() {
}
...
的BASEDIR路徑取決於環境的價值,變量需要用這樣的初始化:
this.baseDir= "/env-"+this.environment+"/somefolder/files";
類由GUI實例化,然後用戶必須選擇他/她想要與之交互的環境,因此,如您所見,在此手動交互之前this.environment
引用了null
值。
我不知道是否會有一個優雅的解決方案來更新此值,而不創建一個新的方法將值附加到路徑。有任何想法嗎?
這是一個相當開放式的問題,因爲它實際上取決於如何被使用的'baseDir'值。如果它只是很少使用,並且只需要在某個晚些時候有效,那麼就沒有理由不在飛機上進行計算。如果它需要立即生效並使用,則需要一些方法來提供合法的默認值。如果頻繁使用,則只需在需要時計算並保存計算值。根據這些選項,有很多方法可以做到這一點。 – Nate