建造者模式

2021-07-03  本文已影响0人  小P_500d

特点:创建的对象不能更改属性,所以只有get方法

不能通过new 创建对象,所以构造方法是private的

链式的调用,所以通过builder设置属性返回的是this对象。


根据平常使用protobuf对接的流程:

通过newBuilder方法返回一个Builder

通过调用Builder的方法设置属性

属性设置完通过build()方法返回对象,对象不可改变,只能获取属性

所以建造者模式的代码如下

public class BuildClass {

    private String name;

    private String id;

    private BuildClass(){}

    // 只提供get方法

    public String getName(){

        return name;

    }

    public String getId(){

        return id;

    }

    // 内部类builder

    private static class Builder{

        //builder会调用各种方法填充属性,所以要返回的对象是一个属性

        private BuildClass buildClass = new BuildClass();

        //返回this对象

        public Builder setName(String name){

            buildClass.name = name;

            return this;

        }

        public Builder setId(String id){

            buildClass.id = id;

            return this;

        }

        //builder有一个build方法返回真正的对象

        public BuildClass build(){

            return buildClass;

        }

    }

    //提供一个newBuild方法

    public static Builder newBuilder(){

        return new Builder();

    }

}

调用:

BuildClass build = BuildClass.newBuilder().setName("name").setId("id").build();

上一篇 下一篇

猜你喜欢

热点阅读