应用场景
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() + "的杯子");
// 输出:我是一个圆柱形杯身圆形杯盖没有花纹的杯子