构建模式Builder

优点:易扩展,使用方便灵活配置参数。例如AlertDialog、Retrofit ...

缺点:内部变化复杂,会有很多的建造类。

Person person =new Person.PersonBuilder()

.buildAge(10)

.buildLike("watch TV")

.buildName("CC")

.build();

/**

* Builder 构建模式

*/

public class Person {

private Stringname;

    private Stringlike;

    private int age;

    private Stringkind;

    private Person(String name, String like, int age, String kind) {

this.name = name;

        this.like = like;

        this.age = age;

        this.kind = kind;

    }

public Person(PersonBuilder builder) {

this.name = builder.name;

        this.like = builder.like;

        this.age = builder.age;

        this.kind = builder.kind;

    }

public Person() {

}

protected void setName(String name) {

this.name = name;

    }

protected void setLike(String like) {

this.like = like;

    }

protected void setAge(int age) {

this.age = age;

    }

protected void setKind(String kind) {

this.kind = kind;

    }

static class PersonBuilder {

private Stringname;

        private Stringlike;

        private int age;

        private Stringkind;

        PersonBuilder() {

}

public PersonBuilderBuilder(String name) {

this.name = name;

return this;

        }

public PersonBuilderBuilder(int age) {

this.age = age;

return this;

        }

PersonBuilderbuildName(String name) {

this.name = name;

return this;

        }

PersonBuilderbuildAge(int age) {

this.age = age;

return this;

        }

PersonBuilderbuildLike(String like) {

this.like = like;

return this;

        }

PersonBuilderbuildKind(String kind) {

this.kind = kind;

return this;

        }

Personbuild() {

//        Person person = new ManPerson();

//        person.setAge(age);

            return new Person(this);

        }

}

@NonNull

@Override

    public StringtoString() {

return "Person:" +kind +" NAME = " +name +" LIKE =" +like +" AGE = " +age;

    }

}


你可能感兴趣的:(构建模式Builder)