Builder建造者设计模式

2018-04-03  本文已影响0人  奔跑的图腾

定义:
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

如果一个对象的属性比较多比较复杂,那么在创建的时候,我们可以采用建造者来灵活地建造,使我们程序更加优雅

public class Person {
    private String name;    //名字
    private int age;        //年龄
    private double height;  //身高
    private double weight;  //体重
    
    public Person(){
        super();
    }
    
    public Person(Builder builder){
        this.name = builder.name;
        this.age = builder.age;
        this.height = builder.height;
        this.weight = builder.weight;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getWeight() {
        return weight;
    }
    public void setWeight(double weight) {
        this.weight = weight;
    }
    
    public static class Builder{
        public String name; //名字
        public int age;     //年龄
        public double height;   //身高
        public double weight;   //体重

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Builder setAge(int age) {
            this.age = age;
            return this;
        }

        public Builder setHeight(double height) {
            this.height = height;
            return this;
        }
        
        public Builder setWeight(double weight) {
            this.weight = weight;
            return this;
        }
        
        public Person build(){
            Person person = new Person(this);
            return person;
        }
    }
}

调用方式

Person.Builder builder = new Person.Builder();
        Person person = builder.setName("android工程师")
                .setAge(29)
                .setHeight(176)
                .setWeight(135)
                .build();
上一篇下一篇

猜你喜欢

热点阅读