Builder设计模式

来源:互联网 发布:学生管理系统报告c语言 编辑:程序博客网 时间:2024/06/05 18:34

应用场景

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() + "的杯子");// 输出:我是一个圆柱形杯身圆形杯盖没有花纹的杯子
0 0
原创粉丝点击