gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:31:05 25 4
gpt4 key购买 nike

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

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

关于java - 在Java中,使用Enums的更好方法是什么?使用静态常量还是使用构造函数和文件外常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com