生成器模式的最佳实践

时间:2019-07-14 19:08:04

标签: design-patterns builder

在创建Builder模式时,我总是将构建器对象传递给类私有构造器,并将静态内部类构建器属性初始化为外部类。

    public class Outer {

    private final String name;
    private final String country;
    private final String zipcode;

    // option 1
    private Outer(String name, String country, String zipcode) {
        super();
        this.name = name;
        this.country = country;
        this.zipcode = zipcode;
    }

    // option 2
    public Outer(Builder builder) {
        this.country = builder.country;
        this.name = builder.name;
        this.zipcode = builder.zipcode;
    }

    static class Builder {

        private String name;
        private String country;
        private String zipcode;

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

        public Builder setZipsetCountry(String zip) {
            this.zipcode = zip;
            return this;
        }

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

       //option 1
        Outer build() {
            return new Outer(name, country, zipcode);
        }

       //option 2
        Outer buildOption2() {
            return new Outer(this);
        }

    }
}

在这种情况下,我过去总是使用选项2。但是,我大学的观点之一是,将构建器类与外部类相结合。但我认为将外部类与内部类结合在一起是可以的,因为这是内部类的本质。那是内部阶级,实际上是在进一步组织外部阶级。

使用第一个选项时,如果要传递20、30个参数,可能会很麻烦,因为它总是推迟使用构建器模式的时间。我大学的观点是它只发生一次。在这一点上,我有点卡住,看起来对我来说都可以。我在这里想念什么?

0 个答案:

没有答案