在 Java 中,使用枚举的更好方法是什么?使用静态常量还是使用构造函数和文件外常量?



我们正在为用户可以登录的可能环境创建一个枚举。但在我的团队中,我们对什么是更好的前进方式存在分歧。我希望从社区中获得一些见解,以便我们都可以学习。

  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,选择你的毒药(,而不是硬编码到你的源代码中。

最新更新