Builder设计模式

应用场景

Builder设计模式有很多地方都有应用,在Android中Dialog就是采用的Builder设计模式,那么在我们的开发中主要的应用场景有哪些呢?

  • 参数很多
  • 参数可选 有些参数不是必须的
  • 需要有良好的代码阅读性

实现方式

建造者模式常采用内部类的方式编写,这有利于实现链式编程,可阅读性强。下面举一个简单的例子来说明。
我们需要生产一个水杯,水杯必须有的是杯身,不必须有的是杯盖,花纹。就这三个参数吧,表达个意思就好。

public class Bottle{
    private String body;
    private String cover;
    private String figure;
    //构造方法私有化就说明不能直接创建Bottle的实例,必须由建造者来实例化
    private Bottle(BottleBuilder builder){
        this.body = builder.body;
        this.cover= builder.cover;
        this.figure= builder.figure;
    }

    public String getBody(){
        return body;
    }

    public String getCover(){
        return cover;
    }

    public String getFigure(){
        return figure;
    }

    public static class BottleBuilder{
        private String body;
        private String cover;
        private String figure;

        public BottleBuilder(String body){
            this.body = body; //这是杯子必须包含的属性
        }

        public BottleBuilder cover(String cover){
            this.cover = cover;
            return this;
        }

        public BottleBuilder figure(String figure){
            this.figure = figure;
            return this;
        }

        public Bottle build(){
            return new Bottle(this);
        }
    }
}

至此就完成了一个使用建造者模式创建Bottle。
使用:

Bottle bottle = new Bottle.BottleBuilder("圆柱形杯身")
                    .cover("圆形杯盖")
                    .figure("没有花纹")
                    .build();
system.out.println("我是一个" + bottle.getBody() + bottle.getCover() + bottle.getFigure() + "的杯子");
// 输出:我是一个圆柱形杯身圆形杯盖没有花纹的杯子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值