设计模式之建造者模式(builder)

Posted lcmiho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之建造者模式(builder)相关的知识,希望对你有一定的参考价值。

设计模式非常重要,阅读源码的必不可少的技能。所以接下来的时间对常见的设计模式进行总结和学习。先进行建造者模式的学习。

建造者模式使用原理,可以链式调用,当你不需要一些属性的时候,可以不必要传入,而传统的方法是通过构造函数传入或者单个的set,get这样非常麻烦。

所以才有了建造者模式。

直接上代码看:

  public class builderPatten {
    private String length;
    private String width;
    private String color;
    private String price;
    private String logo;
    //构造函数,传入的是内部类的一个对象
    private builderPatten(carBuilder builder){
        this.color=builder.color;
        this.length=builder.length;
        this.logo=builder.logo;
        this.price=builder.price;
        this.width=builder.width;
    }
    
    public static class carBuilder{
        private String length;
        private String width;
        private String color;
        private String price;
        private String logo;
       //构建时必须传入的属性。而下面的属性在构造时可以根据需要建造
        public carBuilder(String logo,String price){
            this.logo=logo;
            this.price=price;
        }
        public carBuilder setColor(String color){
            this.color=color;
            return this;
        }
        public carBuilder setWidth(String width){
            this.width=width;
            return this;
        }
        public carBuilder setLength(String length){
            this.length=length;
            return this;
        }
        public builderPatten buid(){
            return new builderPatten(this);
        }
    }

    @Override
    public String toString() {
        return "builderPatten{" +
                "length=‘" + length + ‘‘‘ +
                ", width=‘" + width + ‘‘‘ +
                ", color=‘" + color + ‘‘‘ +
                ", price=‘" + price + ‘‘‘ +
                ", logo=‘" + logo + ‘‘‘ +
                ‘}‘;
    }
}

演示输出:

比如我们想买一个车,我可能觉得车的品牌和价格对我来说时必须的,然后定了这两个属性之后,再选择我一个对颜色要求,其他的不那么重要。

public class patternTest {
    public static void main(String[] args) {
        builderPatten builderPatten=new builderPatten.carBuilder("BMW","1w").setColor("红色").buid();
        System.out.println(builderPatten.toString());
    }
}
结果输出: builderPatten{length
=‘null‘, width=‘null‘, color=‘红色‘, price=‘1w‘, logo=‘BMW‘}

 


以上是关于设计模式之建造者模式(builder)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之建造者模式(builder)

设计模式之建造者模式

设计模式之建造者模式(Builder)

设计模式之建造者(Builder)模式

设计模式之建造者模式——Builder

设计模式之九:建造者模式(Builder)