码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-01-02 17:26:40      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:使用   pre   设计模式   err   属性   length   uil   stat   new   

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

建造者模式使用原理,可以链式调用,当你不需要一些属性的时候,可以不必要传入,而传统的方法是通过构造函数传入或者单个的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)

标签:使用   pre   设计模式   err   属性   length   uil   stat   new   

原文地址:https://www.cnblogs.com/LcMiho/p/10209279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!