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

4 篇文章 0 订阅

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

静态内部类 是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等

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值