Java并发主题:对象的发布或其内部状态

时间:2014-03-06 01:37:01

标签: java concurrency thread-safety

我正在阅读项目的代码库,这里有一些我无法忍受的代码:

protected BaseApiCommand(String apiName, ApiParams params, boolean isGetRequest) {
    this.apiName = apiName;
    this.apiParams = params;
    this.isGet = isGetRequest;
    if (apiParams == null) {
        apiParams = new ApiParams();
    }
}

public static BaseApiCommand createCommand(String apiName, boolean isGet, ApiParams params) {
    return new BaseApiCommand(apiName, params, isGet);
}

我知道它是关于发布的,但我无法理解为什么直接暴露构造函数不安全。任何人都可以详细解释一下吗?

1 个答案:

答案 0 :(得分:0)

事实上,静态函数是类的静态工厂方法,正如Joshua Bloch在Effective Java中提出的那样。这是Java语言中非常常见的模式,可以保护构造函数不受类消费者的影响。