Builder模式(java)。为什么将Builder类公开?

问题描述 投票:0回答:2

为什么我在内部构造器类中看到的每个地方都是公共静态的?它不应该是私有静态的吗?也许我看不到任何东西,但我会说会更好。有人可以向我解释吗?

@Getter @AllArgsConstructor @ToString
public class CarDto {

private final String make;
private final int seatCount;
private final String type;
private final CarDto carDto;

public static Builder builder(){
    return new Builder();
}


private static class Builder{
    private String make;
    private int seatCount;
    private String type;
    private CarDto carDto;


    public Builder make(String make){
        this.make = make;
        return this;
    }

    public Builder seatCount(int seatCount){
        this.seatCount = seatCount;
        return this;
    }

    public Builder type(String type){
        this.type = type;
        return this;
    }

    public Builder carDto(CarDto carDto){
        this.carDto = carDto;
        return this;
    }

    public CarDto create(){
        return new CarDto(make, seatCount,type,carDto);
    }
}
}
java design-patterns private builder
2个回答
0
投票

Builder必须是公共的,才能从其他类访问。尝试让您的构建器调用静态工厂方法CarDto.builder(),否则,您将无法使用seatCount(),...,create()之类的任何构建方法。


0
投票

一个私有的Builder类将毫无用处。首先,您甚至无法做到这一点:

public static Builder builder() {
    return new Builder();
}

因为无法从公共方法公开私有类。

© www.soinside.com 2019 - 2024. All rights reserved.