为了“覆盖”静态属性,使用静态字段扩展类

时间:2018-06-27 17:35:51

标签: java spring software-design

这引起了激烈的辩论,我想知道这种方法是否有任何问题。

我有一个只包含静态字符串的类:

public class EventConstants {
    public static ID = "1";
    public static DOMAIN = "local";
    public static final DEVICE = "PC";
    public static final SOURCE = "local";
}

现在之所以ID和DOMAIN不是final的原因是因为我选择在给定Spring ConfigurationProperties的情况下覆盖它们。所以...

public CustomEventConstanstants extends EventConstants {

    @Autowired
    private PropertyMapper mapper;

    @PostConstruct
    public void init() {
        ID = (mapper.ID != null) ? mapper.ID : EventConstants.ID
        DOMAIN = (mapper.DOMAIN != null) ? mapper.DOMAIN : EventConstants.DOMAIN
    }
}

该类的想法是用户可以简单地调用一个类,并使用是否由Spring属性配置的适当常量。 示例:

object.methodA(CustomEventConstants.ID)  // This will return the configured ID or what's in EventConstants
object.methodB(CustomEventConstants.DEVICE)

我所提出的论点是别人的观点,因为它不能适当地模拟出来,因此不适合进行测试。

0 个答案:

没有答案