静态内部类使用场景(建造者模式)

先了解下静态内部类的调用

静态内部类 是java静态类的使用规范,静态类必须也只能是内部类,用法上和其他的静态变量方法一样,用外部类点内部类名进行创建和使用。

那么静态内部类存在的意义是什么?有什么作用?

静态内部类的使用有几种场景:

1.A类中需要一个B类,但是B类只为A类服务,这种情况不需要将B类单独剥离,只需要在A内部即可。 like earth--water‘s relation

2.一个类的构建有非常多参数的时候--引申到了建造者模式。

参数较多时 ,比如有几十个,初始化参数非常不灵活 (专门提供 VS 想用哪个用哪个),那当然是想用个哪个用哪个,只处理部分参数比较灵活,普通的方式需要自己提供对应的构造函数。

示例:

/**
 * @author xwang
 * @Date 2021/7/15
 * 建造者模式   ---使用场景 当初始化参数较多  构建对象时不灵活,使用建造者模式更加灵活,实现需要使用静态内部类进行,原因有二
 * 1.静态内部类方便外部类直接调用  2.静态内部类进行构建完成之后能够调用外部类的对象。3.内部类只为外部类服务
 */
public class CarBuilder {
    private String engine;
    private BigDecimal price;
    private String color;
    private long length;

    public CarBuilder(Builder builder) {
        this.engine = builder.engine;
        this.price = builder.price;
        this.color = builder.color;
        this.length = builder.length;
    }

    public static class Builder{

        private String engine;
        private BigDecimal price;
        private String color;
        private long length;


        public Builder(){}

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

        public Builder withPrice(BigDecimal price){
            this.price = price;
            return this;
        }
        public Builder withColor(String color){
            this.color = color;
            return this;
        }
        public Builder withLength(Long length){
            this.length = length;
            return this;
        }

        public CarBuilder builder(){
            return new CarBuilder(this);
        }

    }

    public static void main(String[] args) {
        CarBuilder.Builder builder = new CarBuilder.Builder();
        CarBuilder carBuilder = builder.withEngine("")
                .withLength(100L)
                .withPrice(BigDecimal.ONE)
                .withColor("red").builder();
    }
}

建造者模式在框架中使用广泛,比如OkHttpClient.Builder等

你可能感兴趣的:(java,源码)