簡體   English   中英

在Java中,使用枚舉的更好方法是什么? 使用靜態常量還是構造函數和非文件常量? [等候接聽]

[英]In Java, what is the better way to use Enums? With static constants or with constructors and off-file constants? [on hold]

我們正在為用戶可以登錄的可能環境創建一個枚舉。 但是在我的團隊中,我們對哪種更好的進行方式存在分歧。 我希望能從社區中獲得一些見識,以便我們所有人都能學習。

  1. 目的是創建一個具有環境(產品,暫存等)的枚舉。
  2. 每個環境都有一個baseURL,一個loginURLPostfix和一個logoutURLPostfix。

有什么更好的方法來解決這個問題? 並請解釋原因。

方法1

public enum Environment {
    Development,
    Production;

    //
    // Constants
    //

    private static String BASE_URL_STRING_PROD = "https://prodBaseURL.com";
    private static String BASE_URL_STRING_DEV = "https://devBaseURL.com";

    private static String LOGIN_SUFFIX = "/login";
    private static String LOGOUT_SUFFIX = "/logout";

    public String loginURLString() {
        return baseURL() + LOGIN_SUFFIX;
    }

    public String baseURL() {
        switch (this) {
            case Development: return BASE_URL_STRING_PROD;
            case Production: return BASE_URL_STRING_DEV;
            default: return REDIRECT_URI_PROD;
        }
    }
}

方法2

public enum Environment {
    Development(Constants.BASE_URL_STRING_DEV, Constants.LOGIN_SUFFIX),
    Production(Constants.BASE_URL_STRING_, Constants.LOGIN_SUFFIX);


    String baseURL;
    String loginURLSuffix;

    public Environment(String baseURL, String loginURLSuffix) {
        this.baseURL = baseURL;
        this.loginURL = loginURL
    }

    public String loginURLString() {
        return this.baseURL + Constants.LOGIN_SUFFIX;
    }
}


public class Constants {
    public static final String BASE_URL_STRING_PROD = "https://prodBaseURL.com";
    public static final String BASE_URL_STRING_DEV = "https://devBaseURL.com";

    public static final String LOGIN_SUFFIX = "/login";
    public static final String LOGOUT_SUFFIX = "/logout";
}

編輯:StackOverflow將問題擱置為“基於意見”的問題。 因此,為了澄清這一點,我進行了以下編輯:

方法1方法2之間的區別是否純粹基於觀點?

我不喜歡您嘗試設置的屬性的任何一種方法。

您在這里擁有的是代碼中的環境配置,這是您應該避免的事情,因為如果這些參數中的任何一個發生更改,都需要更改代碼。 環境URL最適合配置文件(XML,YAML,.properties,選擇毒葯),而不是硬編碼到源代碼中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM